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