diff options
Diffstat (limited to 'lib/gitlab/identifier.rb')
-rw-r--r-- | lib/gitlab/identifier.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/gitlab/identifier.rb b/lib/gitlab/identifier.rb new file mode 100644 index 00000000000..19cb5c38a53 --- /dev/null +++ b/lib/gitlab/identifier.rb @@ -0,0 +1,23 @@ +# Detect user based on identifier like +# key-13 or user-36 or last commit +module Gitlab + module Indentifier + def identify(identifier, project, newrev) + if identifier.blank? + # Local push from gitlab + email = project.repository.commit(newrev).author_email rescue nil + User.find_by_email(email) if email + + 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 + end + end +end |