summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatricio Cano <suprnova32@gmail.com>2016-08-17 17:59:25 -0500
committerPatricio Cano <suprnova32@gmail.com>2016-08-18 17:15:50 -0500
commitde5f2380293f9c8ccbb9a1c83a309589f42b77b8 (patch)
treefb87823680836f410e17edeea2c2864d5355c739
parent2f86860a6ded54bb48f03bae1de9a88113c75173 (diff)
downloadgitlab-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.rb45
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