summaryrefslogtreecommitdiff
path: root/app/models/gpg_key.rb
diff options
context:
space:
mode:
authorAlexis Reigel <mail@koffeinfrei.org>2017-06-13 13:46:43 +0200
committerAlexis Reigel <mail@koffeinfrei.org>2017-07-27 15:42:53 +0200
commit3c42d730986222d891c9b7985edf3942021afcef (patch)
tree4631a62e7cbfba445e8cf6b89f9b5e6582aa4cc3 /app/models/gpg_key.rb
parent7e13d96715750f74db399bf40ee4ec9679bbe806 (diff)
downloadgitlab-ce-3c42d730986222d891c9b7985edf3942021afcef.tar.gz
add primary keyid attribute to gpg keys
Diffstat (limited to 'app/models/gpg_key.rb')
-rw-r--r--app/models/gpg_key.rb15
1 files changed, 14 insertions, 1 deletions
diff --git a/app/models/gpg_key.rb b/app/models/gpg_key.rb
index d4570e36e06..26f9a3975c9 100644
--- a/app/models/gpg_key.rb
+++ b/app/models/gpg_key.rb
@@ -20,7 +20,14 @@ class GpgKey < ActiveRecord::Base
# the error about the fingerprint
unless: -> { errors.has_key?(:key) }
- before_validation :extract_fingerprint
+ validates :primary_keyid,
+ presence: true,
+ uniqueness: true,
+ # only validate when the `key` is valid, as we don't want the user to show
+ # the error about the fingerprint
+ unless: -> { errors.has_key?(:key) }
+
+ before_validation :extract_fingerprint, :extract_primary_keyid
after_create :notify_user
def key=(value)
@@ -49,6 +56,12 @@ class GpgKey < ActiveRecord::Base
self.fingerprint = Gitlab::Gpg.fingerprints_from_key(key).first
end
+ def extract_primary_keyid
+ # we can assume that the result only contains one item as the validation
+ # only allows one key
+ self.primary_keyid = Gitlab::Gpg.primary_keyids_from_key(key).first
+ end
+
def notify_user
run_after_commit { NotificationService.new.new_gpg_key(self) }
end