module Keycloak::Admin

Os recursos desse module (admin) serão utilizadas apenas por usuários que possuem as roles do client realm-management

Public Class Methods

add_client_level_roles_to_user(id, client, role_representation, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 505
def self.add_client_level_roles_to_user(id, client, role_representation, access_token = nil)
  generic_post("users/#{id}/role-mappings/clients/#{client}", nil, role_representation, access_token)
end
count_users(access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 459
def self.count_users(access_token = nil)
  generic_get("users/count/", nil, access_token)
end
create_user(user_representation, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 455
def self.create_user(user_representation, access_token = nil)
  generic_post("users/", nil, user_representation, access_token)
end
delete_client_level_roles_from_user(id, client, role_representation, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 509
def self.delete_client_level_roles_from_user(id, client, role_representation, access_token = nil)
  generic_delete("users/#{id}/role-mappings/clients/#{client}", nil, role_representation, access_token)
end
delete_user(id, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 471
def self.delete_user(id, access_token = nil)
  generic_delete("users/#{id}", nil, nil, access_token)
end
generic_delete(service, query_parameters = nil, body_parameter = nil, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 590
def self.generic_delete(service, query_parameters = nil, body_parameter = nil, access_token = nil)
  Keycloak.generic_request(effective_access_token(access_token), full_url(service), query_parameters, body_parameter, 'DELETE')
end
generic_get(service, query_parameters = nil, access_token = nil) click to toggle source

Generics methods

# File lib/sqsc-keycloak-ruby.rb, line 578
def self.generic_get(service, query_parameters = nil, access_token = nil)
  Keycloak.generic_request(effective_access_token(access_token), full_url(service), query_parameters, nil, 'GET')
end
generic_post(service, query_parameters, body_parameter, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 582
def self.generic_post(service, query_parameters, body_parameter, access_token = nil)
  Keycloak.generic_request(effective_access_token(access_token), full_url(service), query_parameters, body_parameter, 'POST')
end
generic_put(service, query_parameters, body_parameter, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 586
def self.generic_put(service, query_parameters, body_parameter, access_token = nil)
  Keycloak.generic_request(effective_access_token(access_token), full_url(service), query_parameters, body_parameter, 'PUT')
end
get_all_roles_client(id, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 497
def self.get_all_roles_client(id, access_token = nil)
  generic_get("clients/#{id}/roles", nil, access_token)
end
get_client_level_role_for_user_and_app(id, client, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 513
def self.get_client_level_role_for_user_and_app(id, client, access_token = nil)
  generic_get("users/#{id}/role-mappings/clients/#{client}", nil, access_token)
end
get_clients(query_parameters = nil, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 493
def self.get_clients(query_parameters = nil, access_token = nil)
  generic_get("clients/", query_parameters, access_token)
end
get_effective_client_level_role_composite_user(id, client, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 572
def self.get_effective_client_level_role_composite_user(id, client, access_token = nil)
  generic_get("users/#{id}/role-mappings/clients/#{client}/composite", nil, access_token)
end
get_groups(query_parameters = nil, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 489
def self.get_groups(query_parameters = nil, access_token = nil)
  generic_get("groups/", query_parameters, access_token)
end
get_role_mappings(id, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 485
def self.get_role_mappings(id, access_token = nil)
  generic_get("users/#{id}/role-mappings", nil, access_token)
end
get_roles_client_by_name(id, role_name, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 501
def self.get_roles_client_by_name(id, role_name, access_token = nil)
  generic_get("clients/#{id}/roles/#{role_name}", nil, access_token)
end
get_user(id, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 463
def self.get_user(id, access_token = nil)
  generic_get("users/#{id}", nil, access_token)
end
get_users(query_parameters = nil, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 451
def self.get_users(query_parameters = nil, access_token = nil)
  generic_get("users/", query_parameters, access_token)
end
list_offline_session(client_id, access_token) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 517
def self.list_offline_session(client_id, access_token)
  generic_get("clients/#{client_id}/offline-sessions", nil, access_token)
end
reset_password(id, credential_representation, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 568
def self.reset_password(id, credential_representation, access_token = nil)
  generic_put("users/#{id}/reset-password", nil, credential_representation, access_token)
end
update_account_email(id, actions, redirect_uri = '', client_id = nil, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 480
def self.update_account_email(id, actions, redirect_uri = '', client_id = nil, access_token = nil)
  client_id = Keycloak::Client.client_id if isempty?(client_id)
  generic_put("users/#{id}/execute-actions-email", { redirect_uri: redirect_uri, client_id: client_id }, actions, access_token)
end
update_effective_user_roles(id, client_id, roles_names, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 521
def self.update_effective_user_roles(id, client_id, roles_names, access_token = nil)
  client = JSON get_clients({ clientId: client_id }, access_token)

  user_roles = JSON get_client_level_role_for_user_and_app(id, client[0]['id'], access_token)

  roles = Array.new
  # Include new role
  roles_names.each do |r|
    if r && !r.empty?
      found = false
      user_roles.each do |ur|
        found = ur['name'] == r
        break if found
        found = false
      end
      if !found
        role = JSON get_roles_client_by_name(client[0]['id'], r, access_token)
        roles.push(role)
      end
    end
  end

  garbage_roles = Array.new
  # Exclude old role
  user_roles.each do |ur|
    found = false
    roles_names.each do |r|
      if r && !r.empty?
        found = ur['name'] == r
        break if found
        found = false
      end
    end
    if !found
      garbage_roles.push(ur)
    end
  end

  if garbage_roles.count > 0
    delete_client_level_roles_from_user(id, client[0]['id'], garbage_roles, access_token)
  end

  if roles.count > 0
    add_client_level_roles_to_user(id, client[0]['id'], roles, access_token)
  end
end
update_user(id, user_representation, access_token = nil) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 467
def self.update_user(id, user_representation, access_token = nil)
  generic_put("users/#{id}", nil, user_representation, access_token)
end

Private Class Methods

base_url() click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 604
def self.base_url
  Keycloak::Client.auth_server_url + "/admin/realms/#{Keycloak::Client.realm}/"
end
effective_access_token(access_token) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 596
def self.effective_access_token(access_token)
  if isempty?(access_token)
    Keycloak::Client.token['access_token']
  else
    access_token
  end
end
full_url(service) click to toggle source
# File lib/sqsc-keycloak-ruby.rb, line 608
def self.full_url(service)
  base_url + service
end