diff options
author | Patricio Cano <suprnova32@gmail.com> | 2016-08-17 17:59:25 -0500 |
---|---|---|
committer | Patricio Cano <suprnova32@gmail.com> | 2016-08-18 17:15:50 -0500 |
commit | de5f2380293f9c8ccbb9a1c83a309589f42b77b8 (patch) | |
tree | fb87823680836f410e17edeea2c2864d5355c739 | |
parent | 2f86860a6ded54bb48f03bae1de9a88113c75173 (diff) | |
download | gitlab-ce-2fa-check-git-http.tar.gz |
Refactor `find_for_git_client` and its related methods.2fa-check-git-http
-rw-r--r-- | lib/gitlab/auth.rb | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb index e60ce21388e..91f0270818a 100644 --- a/lib/gitlab/auth.rb +++ b/lib/gitlab/auth.rb @@ -11,7 +11,7 @@ module Gitlab if valid_ci_request?(login, password, project) result.type = :ci else - result.user, result.type = populate_result(login, password) + result = populate_result(login, password) end success = result.user.present? || [:ci, :missing_personal_token].include?(result.type) @@ -75,12 +75,34 @@ module Gitlab end end + def populate_result(login, password) + result = + user_with_password_for_git(login, password) || + oauth_access_token_check(login, password) || + personal_access_token_check(login, password) + + if result + result.type = nil unless result.user + + if result.user && result.user.two_factor_enabled? && result.type == :gitlab_or_ldap + result.type = :missing_personal_token + end + end + + result || Result.new + end + + def user_with_password_for_git(login, password) + user = find_with_user_password(login, password) + Result.new(user, :gitlab_or_ldap) if user + end + def oauth_access_token_check(login, password) if login == "oauth2" && password.present? token = Doorkeeper::AccessToken.by_token(password) if token && token.accessible? user = User.find_by(id: token.resource_owner_id) - return user, :oauth + Result.new(user, :oauth) end end end @@ -89,26 +111,9 @@ module Gitlab if login && password user = User.find_by_personal_access_token(password) validation = User.by_login(login) - return user, :personal_token if user == validation + Result.new(user, :personal_token) if user == validation end end - - def user_with_password_for_git(login, password) - user = find_with_user_password(login, password) - return user, :gitlab_or_ldap if user - end - - def populate_result(login, password) - user, type = - user_with_password_for_git(login, password) || oauth_access_token_check(login, password) || personal_access_token_check(login, password) - - if user && user.two_factor_enabled? && type == :gitlab_or_ldap - user = nil - type = :missing_personal_token - end - - [user, type] - end end end end |