app/libraries/Keycloak/API/Users.php (77 lines of code) (raw):

<?php namespace Keycloak\API; use Log; /** * Users class * * This class provide an easy to use interface for * the Keycloak Users REST API. */ class Users extends BaseKeycloakAPIEndpoint { /** * Get representations of all users * GET /admin/realms/{realm}/users * Returns Array of UserRepresentation */ public function getUsers($realm, $username = null){ // get access token for admin API $access_token = $this->getAPIAccessToken($realm); $url = $this->base_endpoint_url . '/admin/realms/' . rawurlencode($realm) . '/users'; if ($username) { $url = $url . '?username=' . rawurlencode($username); } // Log::debug("getUsers url", array($url)); $r = curl_init($url); curl_setopt($r, CURLOPT_RETURNTRANSFER, 1); curl_setopt($r, CURLOPT_ENCODING, 1); curl_setopt($r, CURLOPT_SSL_VERIFYPEER, $this->verify_peer); if($this->verify_peer && $this->cafile_path){ curl_setopt($r, CURLOPT_CAINFO, $this->cafile_path); } curl_setopt($r, CURLOPT_HTTPHEADER, array( "Authorization: Bearer " . $access_token )); $response = curl_exec($r); if ($response == false) { die("curl_exec() failed. Error: " . curl_error($r)); } $result = json_decode($response); // Log::debug("getUsers result", array($result)); return $result; } public function getUserByUsername($realm, $username){ # getUsers returns all users that have a username containing $username # so we need to check the returned users for one that matches exactly $users = $this->getUsers($realm, $username); foreach ($users as $user) { if ($user->username == $username) { return $user; } } return null; } /** * Search users * GET /admin/realms/{realm}/users * NOTE: the search is a substring search across users' usernames, first and * last names, and email address * Returns Array of UserRepresentation */ public function searchUsers($realm, $keyword){ // get access token for admin API $access_token = $this->getAPIAccessToken($realm); $url = $this->base_endpoint_url . '/admin/realms/' . rawurlencode($realm) . '/users?search=' . rawurlencode($keyword); // Log::debug("getUsers url", array($url)); $r = curl_init($url); curl_setopt($r, CURLOPT_RETURNTRANSFER, 1); curl_setopt($r, CURLOPT_ENCODING, 1); curl_setopt($r, CURLOPT_SSL_VERIFYPEER, $this->verify_peer); if($this->verify_peer && $this->cafile_path){ curl_setopt($r, CURLOPT_CAINFO, $this->cafile_path); } curl_setopt($r, CURLOPT_HTTPHEADER, array( "Authorization: Bearer " . $access_token )); $response = curl_exec($r); if ($response == false) { die("curl_exec() failed. Error: " . curl_error($r)); } $result = json_decode($response); // Log::debug("getUsers result", array($result)); return $result; } /** * Get representation of a user * GET /admin/realms/{realm}/users/{id} * Returns a UserRepresentation */ public function getUser($realm, $user_id) { // get access token for admin API $access_token = $this->getAPIAccessToken($realm); $url = $this->base_endpoint_url . '/admin/realms/' . rawurlencode($realm) . '/users/' . rawurlencode($user_id); // Log::debug("getUser url", array($url)); $r = curl_init($url); curl_setopt($r, CURLOPT_RETURNTRANSFER, 1); curl_setopt($r, CURLOPT_ENCODING, 1); curl_setopt($r, CURLOPT_SSL_VERIFYPEER, $this->verify_peer); if($this->verify_peer && $this->cafile_path){ curl_setopt($r, CURLOPT_CAINFO, $this->cafile_path); } curl_setopt($r, CURLOPT_HTTPHEADER, array( "Authorization: Bearer " . $access_token )); $response = curl_exec($r); if ($response == false) { die("curl_exec() failed. Error: " . curl_error($r)); } $result = json_decode($response); // Log::debug("getUsers result", array($result)); return $result; } }