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";
 
// 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;
  • technical/api-pu-profile.1744537101.txt.gz
  • Last modified: 2025/04/13 11:38
  • by system