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,10 +4,13 @@ module ScimRails | ||
4 | if params[:filter].present? | 4 | if params[:filter].present? |
5 | query = ScimRails::ScimQueryParser.new(params[:filter]) | 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 | counts = ScimCount.new( | 15 | counts = ScimCount.new( |
13 | start_index: params[:startIndex], | 16 | start_index: params[:startIndex], |
@@ -16,22 +19,22 @@ module ScimRails | @@ -16,22 +19,22 @@ module ScimRails | ||
16 | ) | 19 | ) |
17 | json_scim_response(object: users, counts: counts) | 20 | json_scim_response(object: users, counts: counts) |
18 | else | 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 | counts = ScimCount.new( | 26 | counts = ScimCount.new( |
22 | start_index: params[:startIndex], | 27 | start_index: params[:startIndex], |
23 | limit: params[:count], | 28 | limit: params[:count], |
24 | total: users.count | 29 | total: users.count |
25 | ) | 30 | ) |
26 | - | ||
27 | json_scim_response(object: users, counts: counts) | 31 | json_scim_response(object: users, counts: counts) |
28 | end | 32 | end |
29 | end | 33 | end |
30 | 34 | ||
31 | def create | 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 | json_scim_response(object: user, status: :created) | 38 | json_scim_response(object: user, status: :created) |
36 | end | 39 | end |
37 | 40 | ||
@@ -40,16 +43,19 @@ module ScimRails | @@ -40,16 +43,19 @@ module ScimRails | ||
40 | json_scim_response(object: user) | 43 | json_scim_response(object: user) |
41 | end | 44 | end |
42 | 45 | ||
43 | - def update | 46 | + def put_update |
44 | user = @company.public_send(ScimRails.config.scim_users_scope).find(params[:id]) | 47 | user = @company.public_send(ScimRails.config.scim_users_scope).find(params[:id]) |
45 | update_status(user) unless params[:active].nil? | 48 | update_status(user) unless params[:active].nil? |
46 | user.update!(permitted_user_params) | 49 | user.update!(permitted_user_params) |
47 | json_scim_response(object: user) | 50 | json_scim_response(object: user) |
48 | end | 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 | user = @company.public_send(ScimRails.config.scim_users_scope).find(params[:id]) | 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 | json_scim_response(object: user) | 59 | json_scim_response(object: user) |
54 | end | 60 | end |
55 | 61 |