Commit 6f55bd04c7afb1243a19c871791d099f7dbad4e4

Authored by Spencer Alan
1 parent cfcc3aa5
Exists in master

• add determinate order

• change update method names
• update status after user creation
app/controllers/scim_rails/scim_users_controller.rb
... ... @@ -4,10 +4,13 @@ module ScimRails
4 4 if params[:filter].present?
5 5 query = ScimRails::ScimQueryParser.new(params[:filter])
6 6  
7   - users = @company.public_send(ScimRails.config.scim_users_scope).where(
8   - "#{ScimRails.config.scim_users_model.connection.quote_column_name(query.attribute)} #{query.operator} ?",
9   - query.parameter
10   - )
  7 + users = @company
  8 + .public_send(ScimRails.config.scim_users_scope)
  9 + .where(
  10 + "#{ScimRails.config.scim_users_model.connection.quote_column_name(query.attribute)} #{query.operator} ?",
  11 + query.parameter
  12 + )
  13 + .order(ScimRails.config.scim_users_list_order)
11 14  
12 15 counts = ScimCount.new(
13 16 start_index: params[:startIndex],
... ... @@ -16,22 +19,22 @@ module ScimRails
16 19 )
17 20 json_scim_response(object: users, counts: counts)
18 21 else
19   - users = @company.public_send(ScimRails.config.scim_users_scope)
  22 + users = @company
  23 + .public_send(ScimRails.config.scim_users_scope)
  24 + .order(ScimRails.config.scim_users_list_order)
20 25  
21 26 counts = ScimCount.new(
22 27 start_index: params[:startIndex],
23 28 limit: params[:count],
24 29 total: users.count
25 30 )
26   -
27 31 json_scim_response(object: users, counts: counts)
28 32 end
29 33 end
30 34  
31 35 def create
32   - user = @company.public_send(ScimRails.config.scim_users_scope).new
33   - user.create!(permitted_user_params)
34   -
  36 + user = @company.public_send(ScimRails.config.scim_users_scope).create!(permitted_user_params)
  37 + update_status(user) unless params[:active].nil?
35 38 json_scim_response(object: user, status: :created)
36 39 end
37 40  
... ... @@ -40,16 +43,19 @@ module ScimRails
40 43 json_scim_response(object: user)
41 44 end
42 45  
43   - def update
  46 + def put_update
44 47 user = @company.public_send(ScimRails.config.scim_users_scope).find(params[:id])
45 48 update_status(user) unless params[:active].nil?
46 49 user.update!(permitted_user_params)
47 50 json_scim_response(object: user)
48 51 end
49 52  
50   - def deprovision
  53 + # TODO: PATCH will only deprovision users regardless of params.
  54 + # This will work just fine for Okta but is not SCIM compliant.
  55 + def patch_update
51 56 user = @company.public_send(ScimRails.config.scim_users_scope).find(params[:id])
52   - update_status(user) unless params[:active].nil?
  57 + params[:active] = false
  58 + update_status(user)
53 59 json_scim_response(object: user)
54 60 end
55 61  
... ...