summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorAlexis Reigel <mail@koffeinfrei.org>2017-02-24 21:28:26 +0100
committerAlexis Reigel <mail@koffeinfrei.org>2017-07-27 15:40:41 +0200
commitf0fe1b9d4397e6c1c6aa2da6e371e234db774fe2 (patch)
treed7d35a328b4aa6fe0535a57554e0996d1deb6c1b /app
parent0668521b2b8ed32f4a3f192a8ad04c64f6c1c0cd (diff)
downloadgitlab-ce-f0fe1b9d4397e6c1c6aa2da6e371e234db774fe2.tar.gz
gpg email verification
Diffstat (limited to 'app')
-rw-r--r--app/helpers/badges_helper.rb11
-rw-r--r--app/models/gpg_key.rb16
-rw-r--r--app/views/profiles/gpg_keys/_key.html.haml2
3 files changed, 28 insertions, 1 deletions
diff --git a/app/helpers/badges_helper.rb b/app/helpers/badges_helper.rb
new file mode 100644
index 00000000000..e1c8927ab54
--- /dev/null
+++ b/app/helpers/badges_helper.rb
@@ -0,0 +1,11 @@
+module BadgesHelper
+ def verified_email_badge(email, verified)
+ css_classes = %w(btn btn-xs disabled)
+
+ css_classes << 'btn-success' if verified
+
+ content_tag 'span', class: css_classes do
+ "#{email} #{verified ? 'Verified' : 'Unverified'}"
+ end
+ end
+end
diff --git a/app/models/gpg_key.rb b/app/models/gpg_key.rb
index 1101dbae4a9..04c7ce2e79f 100644
--- a/app/models/gpg_key.rb
+++ b/app/models/gpg_key.rb
@@ -31,6 +31,18 @@ class GpgKey < ActiveRecord::Base
Gitlab::Gpg::CurrentKeyChain.emails(fingerprint)
end
+ def emails_with_verified_status
+ emails_in_key_chain = emails
+ emails_from_key = Gitlab::Gpg.emails_from_key(key)
+
+ emails_from_key.map do |email|
+ [
+ email,
+ email == user.email && emails_in_key_chain.include?(email)
+ ]
+ end
+ end
+
private
def extract_fingerprint
@@ -40,6 +52,10 @@ class GpgKey < ActiveRecord::Base
end
def add_to_keychain
+ emails_from_key = Gitlab::Gpg.emails_from_key(key)
+
+ return unless emails_from_key.include?(user.email)
+
Gitlab::Gpg::CurrentKeyChain.add(key)
end
diff --git a/app/views/profiles/gpg_keys/_key.html.haml b/app/views/profiles/gpg_keys/_key.html.haml
index fc167698ccd..d7450a22f4c 100644
--- a/app/views/profiles/gpg_keys/_key.html.haml
+++ b/app/views/profiles/gpg_keys/_key.html.haml
@@ -2,7 +2,7 @@
.pull-left.append-right-10
= icon 'key', class: "settings-list-icon hidden-xs"
.key-list-item-info
- = key.emails.join(' ')
+ = key.emails_with_verified_status.map { |email, verified| verified_email_badge(email, verified) }.join(' ').html_safe
.description
= key.fingerprint
.pull-right