Class: DeviseScim::UsersController

Inherits:
ApplicationController show all
Defined in:
app/controllers/devise_scim/users_controller.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Method Summary collapse

Instance Method Details

#createObject



11
12
13
14
15
# File 'app/controllers/devise_scim/users_controller.rb', line 11

def create
  scim_u = Scim::User.from_h(parsed_body)
  user   = multi_tenant? ? multi_tenant_create(scim_u) : single_tenant_create(scim_u)
  render_scim(scim_adapter_for(user, Scim::User.new).to_scim, status: :created)
end

#destroyObject



38
39
40
# File 'app/controllers/devise_scim/users_controller.rb', line 38

def destroy
  handle_deprovision(find_user!(params[:id]))
end

#indexObject



5
6
7
8
9
# File 'app/controllers/devise_scim/users_controller.rb', line 5

def index
  scope = apply_filter(tenant_scope)
  scim_users = scope.map { |u| scim_adapter_for(u, Scim::User.new).to_scim }
  render_scim(Scim::ListResponse.new(resources: scim_users))
end

#replaceObject



21
22
23
24
25
26
27
28
# File 'app/controllers/devise_scim/users_controller.rb', line 21

def replace
  user   = find_user!(params[:id])
  scim_u = Scim::User.from_h(parsed_body)
  adapter = scim_adapter_for(user, scim_u)
  user.assign_attributes(adapter.attributes_for_update)
  user.save!
  render_scim(scim_adapter_for(user, Scim::User.new).to_scim)
end

#showObject



17
18
19
# File 'app/controllers/devise_scim/users_controller.rb', line 17

def show
  render_scim(scim_adapter_for(find_user!(params[:id]), Scim::User.new).to_scim)
end

#updateObject



30
31
32
33
34
35
36
# File 'app/controllers/devise_scim/users_controller.rb', line 30

def update
  user = find_user!(params[:id])
  ops  = Scim::PatchOperation.parse_request(parsed_body)
  apply_patch(user, ops)
  user.save!
  render_scim(scim_adapter_for(user, Scim::User.new).to_scim)
end