Commit 6f55bd04c7afb1243a19c871791d099f7dbad4e4
1 parent
cfcc3aa5
Exists in
master
• add determinate order
• change update method names • update status after user creation
Showing
1 changed file
with
18 additions
and
12 deletions
Show diff stats
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 | ... | ... |