From 43718728f6a15b4472b94e120592062fcaee0e65 Mon Sep 17 00:00:00 2001 From: jingquan huang <huang.jingquan@163.com> Date: Sun, 22 Sep 2019 17:15:40 +0800 Subject: [PATCH] =?UTF-8?q?git=20=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/gits_controller.rb | 65 ++++++++++++++++-------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/app/controllers/gits_controller.rb b/app/controllers/gits_controller.rb index 910864812..b52e75353 100644 --- a/app/controllers/gits_controller.rb +++ b/app/controllers/gits_controller.rb @@ -19,43 +19,48 @@ class GitsController < ApplicationController result = false if request.env["HTTP_AUTHORIZATION"] && request.env["HTTP_AUTHORIZATION"].split(" ").length == 2 username_password = Base64.decode64(request.env["HTTP_AUTHORIZATION"].split(" ")[1]) - input_username = username_password.split(":")[0].strip() - input_password = username_password.split(":")[1].strip() - uid_logger("git start auth: input_username is #{input_username}") - - # Git 超级权限用户 - if input_username.strip == gituser.strip && input_password.strip == gitpassword.strip - result = true + if username_password.split(":")[0].nil? || username_password.split(":")[1].nil? + result = false else - # 用户是否对对象拥有权限 - system_user = User.find_by_login(input_username) || User.find_by_mail(input_username) || User.find_by_phone(input_username) + input_username = username_password.split(":")[0].strip() + input_password = username_password.split(":")[1].strip() + uid_logger("git start auth: input_username is #{input_username}") + - # 如果用户名密码错误 - if system_user && !system_user.check_password?(input_password) - uid_logger_error("git start: password is wrong") - result = false + # Git 超级权限用户 + if input_username.strip == gituser.strip && input_password.strip == gitpassword.strip + result = true else - git_url = params["url"] - username = git_url.split("/")[0] - shixunname = git_url.split("/")[1].split(".")[0] - repo_name = username + "/" + shixunname - uid_logger("git start: repo_name is #{repo_name}") - shixun = Shixun.select([:id, :user_id, :repo_name, :identifier]).where(repo_name: repo_name).first - uid_logger("git start auth: shixun identifier is #{shixun.try(:identifier)}") - uid_logger("git start auth: systemuser is #{system_user.try(:login)}") + # 用户是否对对象拥有权限 + system_user = User.find_by_login(input_username) || User.find_by_mail(input_username) || User.find_by_phone(input_username) - if shixun.present? - if system_user.present? && system_user.manager_of_shixun?(shixun) - result = true + # 如果用户名密码错误 + if system_user && !system_user.check_password?(input_password) + uid_logger_error("git start: password is wrong") + result = false + else + git_url = params["url"] + username = git_url.split("/")[0] + shixunname = git_url.split("/")[1].split(".")[0] + repo_name = username + "/" + shixunname + uid_logger("git start: repo_name is #{repo_name}") + shixun = Shixun.select([:id, :user_id, :repo_name, :identifier]).where(repo_name: repo_name).first + uid_logger("git start auth: shixun identifier is #{shixun.try(:identifier)}") + uid_logger("git start auth: systemuser is #{system_user.try(:login)}") + + if shixun.present? + if system_user.present? && system_user.manager_of_shixun?(shixun) + result = true + else + uid_logger_error("gituser is not shixun manager") + result = false + end else - uid_logger_error("gituser is not shixun manager") - result = false + uid_logger_error("shixun is not exist") + # result = false + result = true # 为了测试跳出 end - else - uid_logger_error("shixun is not exist") - # result = false - result = true # 为了测试跳出 end end end