Commit d92a53537b22b9246241d1e1a1e3bd23405df357

Authored by Spencer Alan
1 parent 5e2186a6
Exists in master

update to scim compliant errors

app/controllers/concerns/scim_rails/exception_handler.rb
@@ -10,19 +10,48 @@ module ScimRails @@ -10,19 +10,48 @@ module ScimRails
10 10
11 included do 11 included do
12 rescue_from ScimRails::ExceptionHandler::InvalidCredentials do 12 rescue_from ScimRails::ExceptionHandler::InvalidCredentials do
13 - json_response({ message: "Invalid credentials" }, :unauthorized) 13 + json_response(
  14 + {
  15 + schemas: ["urn:ietf:params:scim:api:messages:2.0:Error"],
  16 + detail: "Authorization failure. The authorization header is invalid or missing.",
  17 + status: "401"
  18 + },
  19 + :unauthorized
  20 + )
14 end 21 end
15 22
16 rescue_from ScimRails::ExceptionHandler::MissingCredentials do 23 rescue_from ScimRails::ExceptionHandler::MissingCredentials do
17 - json_response({ message: "Missing credentials" }, :unauthorized) 24 + json_response(
  25 + {
  26 + schemas: ["urn:ietf:params:scim:api:messages:2.0:Error"],
  27 + detail: "Authorization failure. The authorization header is invalid or missing.",
  28 + status: "401"
  29 + },
  30 + :unauthorized
  31 + )
18 end 32 end
19 33
20 rescue_from ActiveRecord::RecordNotFound do |e| 34 rescue_from ActiveRecord::RecordNotFound do |e|
21 - json_response({ message: e.message }, :not_found) 35 + json_response(
  36 + {
  37 + schemas: ["urn:ietf:params:scim:api:messages:2.0:Error"],
  38 + detail: "Resource #{e.id} not found.",
  39 + status: "404"
  40 + },
  41 + :not_found
  42 + )
22 end 43 end
23 44
24 rescue_from ActiveRecord::RecordInvalid do |e| 45 rescue_from ActiveRecord::RecordInvalid do |e|
25 - json_response({ message: e.message }, :unprocessable_entity) 46 + json_response(
  47 + {
  48 + schemas: ["urn:ietf:params:scim:api:messages:2.0:Error"],
  49 + scimType: "invalidValue",
  50 + detail: e.message,
  51 + status: "400"
  52 + },
  53 + :unprocessable_entity
  54 + )
26 end 55 end
27 end 56 end
28 end 57 end