From 48628d31d59f007fbf4b6958eb2a48adedaef8e4 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 7 Feb 2013 09:42:22 +0200 Subject: [PATCH] dont allow duplicates in ssh keys --- app/models/key.rb | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/app/models/key.rb b/app/models/key.rb index 0c01edcbe71..895e8d6cb9c 100644 --- a/app/models/key.rb +++ b/app/models/key.rb @@ -24,8 +24,8 @@ class Key < ActiveRecord::Base before_save :set_identifier validates :title, presence: true, length: { within: 0..255 } - validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / } - validate :unique_key, :fingerprintable_key + validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / }, uniqueness: true + validate :fingerprintable_key delegate :name, :email, to: :user, prefix: true @@ -33,14 +33,6 @@ class Key < ActiveRecord::Base self.key = self.key.strip unless self.key.blank? end - def unique_key - query = Key.where(key: key) - query = query.where('(project_id IS NULL OR project_id = ?)', project_id) if project_id - if (query.count > 0) - errors.add :key, 'already exist.' - end - end - def fingerprintable_key return true unless key # Don't test if there is no key. # `ssh-keygen -lf /dev/stdin <<< "#{key}"` errors with: redirection unexpected @@ -65,7 +57,7 @@ class Key < ActiveRecord::Base end def is_deploy_key - true if project_id + !!project_id end # projects that has this key @@ -77,10 +69,6 @@ class Key < ActiveRecord::Base end end - def last_deploy? - Key.where(identifier: identifier).count == 0 - end - def shell_id "key-#{self.id}" end