diff --git a/app/assets/stylesheets/_application.scss b/app/assets/stylesheets/_application.scss index a5b4f6e62..d2c61e8dc 100644 --- a/app/assets/stylesheets/_application.scss +++ b/app/assets/stylesheets/_application.scss @@ -104,3 +104,6 @@ // settings @import 'user_applications'; + +// API +@import "openid_connect_error_page"; diff --git a/app/assets/stylesheets/openid_connect_error_page.scss b/app/assets/stylesheets/openid_connect_error_page.scss new file mode 100644 index 000000000..ccb566a5b --- /dev/null +++ b/app/assets/stylesheets/openid_connect_error_page.scss @@ -0,0 +1,7 @@ +.api-error { + margin-top: 20px; + box-shadow: $card-shadow; + background-color: $light-grey; + + h4 { text-align: center; } +} diff --git a/app/controllers/api/openid_connect/authorizations_controller.rb b/app/controllers/api/openid_connect/authorizations_controller.rb index fcab40d12..28f1a702c 100644 --- a/app/controllers/api/openid_connect/authorizations_controller.rb +++ b/app/controllers/api/openid_connect/authorizations_controller.rb @@ -110,8 +110,7 @@ module Api if auth process_authorization_consent("true") else - handle_params_error("interaction_required", - "The Authentication Request cannot be completed without end-user interaction") + render_error "The Authentication Request cannot be completed without end-user interaction" end else handle_params_error("invalid_request", @@ -219,12 +218,19 @@ module Api def auth_user_unless_prompt_none! if params[:prompt] == "none" && !user_signed_in? - handle_params_error("login_required", - "User must already be logged in when 'prompt' is 'none'") + render_error "User must be first logged in when `prompt` is `none`" + # render json: {error: "login_required", + # description: "User must be first logged in when `prompt` is `none`"} else authenticate_user! end end + + def render_error(error_description) + @error_description = error_description + render "api/openid_connect/error/error", + layout: request.format == :mobile ? "application" : "with_header_with_footer" + end end end end diff --git a/app/views/api/openid_connect/error/_error.html.haml b/app/views/api/openid_connect/error/_error.html.haml new file mode 100644 index 000000000..d9543bac4 --- /dev/null +++ b/app/views/api/openid_connect/error/_error.html.haml @@ -0,0 +1,6 @@ +.container-fluid + .row + .api-error.col-sm-6.col-sm-offset-3 + %h4 + %b= t("api.openid_connect.error_page.title") + %div= @error_description diff --git a/app/views/api/openid_connect/error/error.html.haml b/app/views/api/openid_connect/error/error.html.haml new file mode 100644 index 000000000..a9b15dbd0 --- /dev/null +++ b/app/views/api/openid_connect/error/error.html.haml @@ -0,0 +1 @@ += render partial: "api/openid_connect/error/error" diff --git a/app/views/api/openid_connect/error/error.mobile.haml b/app/views/api/openid_connect/error/error.mobile.haml new file mode 100644 index 000000000..a9b15dbd0 --- /dev/null +++ b/app/views/api/openid_connect/error/error.mobile.haml @@ -0,0 +1 @@ += render partial: "api/openid_connect/error/error" diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index 62e8d9547..b6dee2b3f 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -917,6 +917,8 @@ en: write: name: "send posts, conversations and reactions" description: "This allows the application to send new posts, write conversations, and send reactions" + error_page: + title: "Oh! Something went wrong :(" people: zero: "No people"