OSDN Git Service

Fix http push with namespaces. Allow use of username as login
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 26 Nov 2012 09:23:08 +0000 (11:23 +0200)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 26 Nov 2012 09:23:08 +0000 (11:23 +0200)
app/roles/repository.rb
lib/gitlab/backend/grack_auth.rb

index ba61aa4..c655ec9 100644 (file)
@@ -185,7 +185,7 @@ module Repository
   end
 
   def http_url_to_repo
-    http_url = [Gitlab.config.url, "/", path, ".git"].join('')
+    http_url = [Gitlab.config.url, "/", path_with_namespace, ".git"].join('')
   end
 
   # Check if current branch name is marked as protected in the system
index dd5a9be..9fafc96 100644 (file)
@@ -4,10 +4,14 @@ module Grack
 
     def valid?
       # Authentication with username and password
-      email, password = @auth.credentials
-      self.user = User.find_by_email(email)
+      login, password = @auth.credentials
+
+      self.user = User.find_by_email(login) || User.find_by_username(login)
+
       return false unless user.try(:valid_password?, password)
 
+      email = user.email
+
       # Set GL_USER env variable
       ENV['GL_USER'] = email
       # Pass Gitolite update hook
@@ -18,8 +22,8 @@ module Grack
       @env['SCRIPT_NAME'] = ""
 
       # Find project by PATH_INFO from env
-      if m = /^\/([\w\.-]+)\.git/.match(@request.path_info).to_a
-        self.project = Project.find_by_path(m.last)
+      if m = /^\/([\w\.\/-]+)\.git/.match(@request.path_info).to_a
+        self.project = Project.find_with_namespace(m.last)
         return false unless project
       end