debian-mirror-gitlab/app/controllers/oauth/authorizations_controller.rb

47 lines
1.3 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2015-04-26 12:48:37 +05:30
class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
2019-12-21 20:55:43 +05:30
include Gitlab::Experimentation::ControllerConcern
2020-01-01 13:55:28 +05:30
include InitializesCurrentUserMode
2020-08-18 19:51:02 +05:30
before_action :verify_confirmed_email!
2020-05-30 21:06:31 +05:30
2015-09-11 14:41:01 +05:30
layout 'profile'
2015-04-26 12:48:37 +05:30
2018-12-13 13:39:08 +05:30
# Overridden from Doorkeeper::AuthorizationsController to
2017-08-17 22:00:37 +05:30
# include the call to session.delete
2015-04-26 12:48:37 +05:30
def new
if pre_auth.authorizable?
if skip_authorization? || matching_token?
auth = authorization.authorize
2016-06-02 11:05:42 +05:30
session.delete(:user_return_to)
2015-04-26 12:48:37 +05:30
redirect_to auth.redirect_uri
else
render "doorkeeper/authorizations/new"
end
else
render "doorkeeper/authorizations/error"
end
end
2020-05-30 21:06:31 +05:30
2021-01-08 16:13:35 +05:30
def create
# Confidential apps require the client_secret to be sent with the request.
# Doorkeeper allows implicit grant flow requests (response_type=token) to
# work without client_secret regardless of the confidential setting.
if pre_auth.authorizable? && pre_auth.response_type == 'token' && pre_auth.client.application.confidential
render "doorkeeper/authorizations/error"
else
super
end
end
2020-05-30 21:06:31 +05:30
private
def verify_confirmed_email!
return if current_user&.confirmed?
pre_auth.error = :unconfirmed_email
render "doorkeeper/authorizations/error"
end
2015-04-26 12:48:37 +05:30
end