about summary refs log tree commit diff
path: root/app/controllers/oauth
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-09-09 04:10:44 +0200
committerGitHub <noreply@github.com>2018-09-09 04:10:44 +0200
commit2288d50a7bb4afcec4cfbcaa4b5cffaabd1df437 (patch)
tree7280431cffebdd35edcf99b53e92321b8a693dad /app/controllers/oauth
parent2492c12281e4fc692fc4f0fe9dc0abb0455b50d8 (diff)
Add force_login option to OAuth authorize page (#8655)
* Add force_login option to OAuth authorize page

For when a user needs to sign into an app from multiple accounts
on the same server

* When logging out from modal header, redirect back after re-login
Diffstat (limited to 'app/controllers/oauth')
-rw-r--r--app/controllers/oauth/authorizations_controller.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/controllers/oauth/authorizations_controller.rb b/app/controllers/oauth/authorizations_controller.rb
index e9cdf9fa8..cebbdc4d0 100644
--- a/app/controllers/oauth/authorizations_controller.rb
+++ b/app/controllers/oauth/authorizations_controller.rb
@@ -13,4 +13,18 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
   def store_current_location
     store_location_for(:user, request.url)
   end
+
+  def render_success
+    if skip_authorization? || (matching_token? && !truthy_param?('force_login'))
+      redirect_or_render authorize_response
+    elsif Doorkeeper.configuration.api_only
+      render json: pre_auth
+    else
+      render :new
+    end
+  end
+
+  def truthy_param?(key)
+    ActiveModel::Type::Boolean.new.cast(params[key])
+  end
 end