'', 'username' => '', 'email' => '', 'userkey' => '1', 'view' => 3, 'settings' => '', 'service' => 0, 'language' => '', 'login_count' => 0, 'partnerhierarchy' => json_encode($_SESSION['authorization']['partnerhierarchy'] ?? new stdClass()), 'created' => null, 'updated' => null, 'lastlogin' => null, 'updatedby' => null ]; $service_active = 0; $role_assignments = null; } else { //CALL TO API FOR User information $api_url = '/v2/users/id='.$user_ID; $responses = ioServer($api_url,''); //Decode Payload if (!empty($responses)){$responses = json_decode($responses);}else{$responses = null;} $user = $responses[0] ?? null; // If user not found, redirect if ($user === null) { header('location: index.php?page=users'); exit; } $service_active = isServiceActive($user->service); //CALL TO API FOR User Role Assignments $api_url = '/v2/user_role_assignments/user_id='.$user_ID; $role_assignments = ioServer($api_url,''); //Decode Payload if (!empty($role_assignments)){$role_assignments = json_decode($role_assignments);}else{$role_assignments = null;} } //CALL TO API FOR All Available Roles $api_url = '/v2/user_roles/status=1&p=1'; $all_roles_response = ioServer($api_url,''); //Decode Payload if (!empty($all_roles_response)){ $all_roles = json_decode($all_roles_response); if (!is_array($all_roles)){ $all_roles = []; } } else { $all_roles = []; } //------------------------------ // Handle POST for creating new user //------------------------------ if (isset($_POST['create_user']) && $create_allowed === 1 && $is_new_user) { // Build user data for new user $user_data = [ 'userkey' => $_POST['userkey'] ?? 1, 'username' => $_POST['username'] ?? '', 'email' => $_POST['email'] ?? '', 'view' => $_POST['view'] ?? 3, 'settings' => $_POST['settings'] ?? '', 'service' => $_POST['service'] ?? 0, 'language' => $_POST['language'] ?? '', 'login_count' => 0, 'salesid' => $_POST['salesid'] ?? '', 'soldto' => $_POST['soldto'] ?? '', 'shipto' => $_POST['shipto'] ?? '', 'location' => $_POST['location'] ?? '' ]; $data = json_encode($user_data, JSON_UNESCAPED_UNICODE); $response = ioServer('/v2/users', $data); // Get the new user ID from the response $new_user = json_decode($response); $new_user_id = $new_user->id ?? null; // Save role assignments for new user if we have an ID and roles are selected if ($new_user_id && !empty($_POST['roles'])) { $role_data = [ 'batch_update' => true, 'user_id' => (int)$new_user_id, 'roles' => array_map('intval', $_POST['roles']) ]; $data = json_encode($role_data, JSON_UNESCAPED_UNICODE); ioServer('/v2/user_role_assignments', $data); } if ($new_user_id) { header('Location: index.php?page=user&id='.$new_user_id.'&success_msg=1'); } else { header('Location: index.php?page=users&success_msg=1'); } exit; } //------------------------------ // Handle POST for inline edit (user AND roles) //------------------------------ if (isset($_POST['save_user']) && $update_allowed === 1 && !$is_new_user) { // Build user data using existing field names $user_data = [ 'id' => $user_ID, 'userkey' => $_POST['userkey'] ?? 1, 'username' => $_POST['username'] ?? '', 'email' => $_POST['email'] ?? '', 'view' => $_POST['view'] ?? 3, 'settings' => $_POST['settings'] ?? '', 'service' => $_POST['service'] ?? 0, 'language' => $_POST['language'] ?? '', 'login_count' => $_POST['login_count'] ?? 0, 'salesid' => $_POST['salesid'] ?? '', 'soldto' => $_POST['soldto'] ?? '', 'shipto' => $_POST['shipto'] ?? '', 'location' => $_POST['location'] ?? '' ]; $data = json_encode($user_data, JSON_UNESCAPED_UNICODE); ioServer('/v2/users', $data); // Also save role assignments $role_data = [ 'batch_update' => true, 'user_id' => (int)$user_ID, 'roles' => isset($_POST['roles']) ? array_map('intval', $_POST['roles']) : [] ]; $data = json_encode($role_data, JSON_UNESCAPED_UNICODE); ioServer('/v2/user_role_assignments', $data); // Redirect to refresh header('Location: index.php?page=user&id='.$user_ID.'&success_msg=2'); exit; } // Handle password reset if (isset($_POST['reset']) && $update_allowed === 1) { $data = json_encode(['id' => $user_ID, 'reset' => 'reset'], JSON_UNESCAPED_UNICODE); ioServer('/v2/users', $data); header('Location: index.php?page=user&id='.$user_ID.'&success_msg=4'); exit; } // Handle unblock if (isset($_POST['unblock']) && $update_allowed === 1) { $data = json_encode(['id' => $user_ID, 'login_count' => '0'], JSON_UNESCAPED_UNICODE); ioServer('/v2/users', $data); header('Location: index.php?page=user&id='.$user_ID.'&success_msg=5'); exit; } // Handle delete if (isset($_POST['delete']) && $delete_allowed === 1) { $data = json_encode(['id' => $user_ID, 'delete' => 'delete'], JSON_UNESCAPED_UNICODE); ioServer('/v2/users', $data); header('Location: index.php?page=users&success_msg=3'); exit; } //------------------------------ //Variables //------------------------------ $is_blocked = ($user->login_count > 4); $is_active = ($user->userkey && $user->userkey != ''); if ($is_blocked) { $status_text = ($User_block ?? 'Blocked'); $status_class = 'id0'; } elseif ($is_active) { $status_text = ($enabled ?? 'Active'); $status_class = 'id1'; } else { $status_text = ($disabled ?? 'Inactive'); $status_class = 'id0'; } // Handle success messages if (isset($_GET['success_msg'])) { if ($_GET['success_msg'] == 1) { $success_msg = ($message_user_1 ?? 'User created successfully'); } if ($_GET['success_msg'] == 2) { $success_msg = ($message_user_2 ?? 'User updated successfully'); } if ($_GET['success_msg'] == 3) { $success_msg = ($message_user_3 ?? 'User deleted successfully'); } if ($_GET['success_msg'] == 4) { $success_msg = ($message_user_4 ?? 'Password reset successfully'); } if ($_GET['success_msg'] == 5) { $success_msg = ($message_user_5 ?? 'User unblocked successfully'); } if ($_GET['success_msg'] == 6) { $success_msg = ($message_user_6 ?? 'Roles updated successfully'); } } template_header(($user_title ?? 'User'), 'user', 'view'); if ($is_new_user) { $page_title = ($user_new ?? 'New User'); } else { $page_title = ($user_h2 ?? 'User').' - '.$user->username; } $view = '
'.$success_msg.'
| '.($User_pw_reset ?? 'Reset Password').' | |
| '.($User_unblock ?? 'Unblock User').' | |
| '.($general_delete ?? 'Delete User').' |