You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/06/16 20:36:23 UTC
[20/50] [abbrv] airavata-php-gateway git commit: AIRAVATA-2342
Keycloak: search users
AIRAVATA-2342 Keycloak: search users
Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/994483d0
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/994483d0
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/994483d0
Branch: refs/heads/develop
Commit: 994483d0c48d0272eda12d8f2824bc7f342e181f
Parents: 64362fe
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Mar 28 17:15:54 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Mar 28 17:15:54 2017 -0400
----------------------------------------------------------------------
app/controllers/AdminController.php | 2 +-
app/libraries/Keycloak/API/Users.php | 30 ++++++++++++++++++++++++++++++
app/libraries/Keycloak/Keycloak.php | 16 ++++++++++++++++
3 files changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/994483d0/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php
index f52de91..d6a19e0 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -85,7 +85,7 @@ class AdminController extends BaseController {
public function searchUsersView(){
if(Input::has("search_val"))
{
- $users = WSIS::searchUsers(Input::get("search_val"));
+ $users = Keycloak::searchUsers(Input::get("search_val"));
}
else
$users = Keycloak::listUsers();
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/994483d0/app/libraries/Keycloak/API/Users.php
----------------------------------------------------------------------
diff --git a/app/libraries/Keycloak/API/Users.php b/app/libraries/Keycloak/API/Users.php
index c1c8aca..089ad3a 100644
--- a/app/libraries/Keycloak/API/Users.php
+++ b/app/libraries/Keycloak/API/Users.php
@@ -55,6 +55,36 @@ class Users {
}
/**
+ * 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();
+ $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);
+ 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
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/994483d0/app/libraries/Keycloak/Keycloak.php
----------------------------------------------------------------------
diff --git a/app/libraries/Keycloak/Keycloak.php b/app/libraries/Keycloak/Keycloak.php
index 8c9c1a1..1f876b0 100644
--- a/app/libraries/Keycloak/Keycloak.php
+++ b/app/libraries/Keycloak/Keycloak.php
@@ -191,6 +191,22 @@ class Keycloak {
}
/**
+ * Function to search users
+ * NOTE: Keycloak uses the keyword to search in the username, first and last
+ * name and email address
+ * @param $keyword
+ * @return Array of usernames
+ */
+ public function searchUsers($phrase){
+ $users = $this->users->searchUsers($this->realm, $phrase);
+ $usernames = [];
+ foreach ($users as $user) {
+ $usernames[] = $user->username;
+ }
+ return $usernames;
+ }
+
+ /**
* Function to get the list of all existing roles
* For Keycloak this is a list of "Realm roles"
*