lib/keycloak.rb in keycloak-1.1.0 vs lib/keycloak.rb in keycloak-1.1.1

- old
+ new

@@ -1,6 +1,6 @@ -require "keycloak/version" +require 'keycloak/version' require 'rest-client' require 'json' require 'jwt' require 'base64' require 'uri' @@ -439,21 +439,25 @@ class << self attr_accessor :admin_user, :admin_password end - def self.forgot_password(userID, redirectURI) + def self.change_password(userID, redirectURI = '') proc = lambda {|token| Keycloak.generic_request(token["access_token"], Keycloak::Client.auth_server_url + "/admin/realms/#{Keycloak::Client.realm}/users/#{userID}/execute-actions-email", {:redirect_uri => redirectURI, :client_id => Keycloak::Client.client_id}, ['UPDATE_PASSWORD'], 'PUT') } default_call(proc) + end + def self.forgot_password(userLogin, redirectURI = '') + user = get_user_info(userLogin, true) + change_password(user['id'], redirectURI) end def self.get_logged_user_info proc = lambda {|token| userinfo = Keycloak::Client.get_userinfo @@ -463,10 +467,49 @@ } default_call(proc) end + def self.get_user_info(userLogin, wholeWord = false) + proc = lambda {|token| + if userLogin.index('@').nil? + search = {:username => userLogin} + else + search = {:email => userLogin} + end + users = JSON Keycloak.generic_request(token["access_token"], + Keycloak::Client.auth_server_url + "/admin/realms/#{Keycloak::Client.realm}/users/", + search, nil, 'GET') + users[0] + if users.count == 0 + raise Keycloak::UserLoginNotFound + else + efectiveIndex = -1 + users.each_with_index do |user, i| + if wholeWord + efectiveIndex = i if userLogin == user['username'] || userLogin == user['email'] + else + efectiveIndex = 0 + end + break if efectiveIndex >= 0 + end + + if efectiveIndex >= 0 + if wholeWord + users[efectiveIndex] + else + users + end + else + raise Keycloak::UserLoginNotFound + end + end + } + + default_call(proc) + end + def self.is_logged_federation_user? info = get_logged_user_info info['federationLink'] != nil end @@ -607,5 +650,7 @@ end end end end + +require 'keycloak/exceptions' \ No newline at end of file