This is an old revision of the document!
Change a Permanent User's Profile
- To change the Profile of a Permanent User we first have to determine the id of the Permanent User.
- A CRM system typically do not know the id of the Permanent User in RADIUSdesk.
- With the sample script we use two APIs
- The one API is used get a list of Permanent Users to collect their ids.
- The other API is used to change the Profile of the list of Permanent Users which was obtained.
- permanent_user_disable_enable.php
<?php // Configuration $server = 'http://127.0.0.1'; $token = 'b4c6ac81-8c7c-4802-b50a-0a6380555b50'; $cloud_id = 23; $username = 'testuser@dev'; $profile = 'MzanziFibre-12/1'; $realm = 'Dev'; $api_url = "$server/cake4/rd_cake/permanent-users/edit-basic-info.json"; $username = '@dev'; // Filter settings $filter = 'username'; //field that filter should apply to $operator = 'like'; //Options '==','like' $value = $username; //can also be set to boolean e.g. true or false to filter for instance on the 'active' field $limit = 1000; // Filter $filter_array = [[ "operator" => $operator, "value" => $value, "property" => $filter ]]; $encoded_filter = urlencode(json_encode($filter_array)); $find_url = "$server/cake4/rd_cake/permanent-users/index.json?page=1&start=0&limit=1000&filter=$encoded_filter&token=$token&cloud_id=$cloud_id"; // Get User IDs $listOfIds = getIds($find_url); if ($listOfIds) { foreach ($listOfIds as $id) { $payload = [ 'cloud_id' => $cloud_id, 'token' => $token, 'realm' => $realm, 'profile' => $profile, 'id' => $id ]; $response = sendPostRequest($api_url, $payload); echo "Updated ID $id - Response: $response\n"; } } function getIds($find_url) { $context = stream_context_create([ 'http' => [ 'header' => "Accept: application/json\r\nContent-Type: application/json\r\n" ] ]); echo "Fetching URL: $find_url\n"; $response = file_get_contents($find_url, false, $context); if ($response === false) { echo "Error fetching data\n"; return false; } $data = json_decode($response, true); if (!empty($data['items']) && is_array($data['items'])) { echo "There are " . count($data['items']) . " items\n"; return array_column($data['items'], 'id'); } echo "No items found.\n"; return false; } function sendPostRequest($url, $data) { $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_HTTPHEADER => ['Content-Type: application/json'] ]); $response = curl_exec($ch); if ($response === false) { echo "cURL error: " . curl_error($ch) . "\n"; } curl_close($ch); return $response; } ?>
- We are not limited to only one user but we can adjust the filter for instance to change the Profiles of all the users with a specific suffix e.g. @dev.
- For this we have to make the following adjustments:
$username = '@dev'; // Filter settings $filter = 'username'; //field that filter should apply to $operator = 'like'; //Options '==','like' $value = $username; //can also be set to boolean e.g. true or false to filter for instance on the 'active' field $limit = 1000;