summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-02-14 14:00:02 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-02-14 14:00:02 +0200
commitb698094d4dcd1558bfcc1611d3572297dd11ae1e (patch)
tree2be71177fb83cce5f67df1683d56d9f7b3737a03
parented3f44085e01f50864ce840f007a50d2154df6f5 (diff)
downloadgitlab-ce-b698094d4dcd1558bfcc1611d3572297dd11ae1e.tar.gz
Update post-receive worker to use correct identifier
-rw-r--r--app/workers/post_receive.rb16
-rw-r--r--lib/gitlab/backend/grack_auth.rb7
2 files changed, 12 insertions, 11 deletions
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb
index e3f62d736ef..3ef6d5977cf 100644
--- a/app/workers/post_receive.rb
+++ b/app/workers/post_receive.rb
@@ -21,14 +21,18 @@ class PostReceive
return false
end
- # Ignore push from non-gitlab users
- user = if identifier.nil?
- raise identifier.inspect
+ user = if identifier.blank?
+ # Local push from gitlab
email = project.repository.commit(newrev).author.email rescue nil
User.find_by_email(email) if email
- elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
- User.find_by_email(identifier)
- elsif identifier =~ /key/
+
+ elsif identifier =~ /\Auser-\d+\Z/
+ # git push over http
+ user_id = identifier.gsub("user-", "")
+ User.find_by_id(user_id)
+
+ elsif identifier =~ /\Akey-\d+\Z/
+ # git push over ssh
key_id = identifier.gsub("key-", "")
Key.find_by_id(key_id).try(:user)
end
diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index a2d15d57034..8fcafe4ea9d 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -7,9 +7,6 @@ module Grack
@request = Rack::Request.new(env)
@auth = Request.new(env)
- # Pass Gitolite update hook
- ENV['GL_BYPASS_UPDATE_HOOK'] = "true"
-
# Need this patch due to the rails mount
@env['PATH_INFO'] = @request.path
@env['SCRIPT_NAME'] = ""
@@ -35,8 +32,8 @@ module Grack
self.user = User.find_by_email(login) || User.find_by_username(login)
return false unless user.try(:valid_password?, password)
- # Set GL_USER env variable
- ENV['GL_USER'] = user.email
+ # Set GL_ID env variable
+ ENV['GL_ID'] = "user-#{user.id}"
end
# Git upload and receive