Commit 5b4382e1 authored by miks's avatar miks

Validate key uniqueness across Key and DeployKey tables

parent c973fce6
require 'unique_public_key_validator'
class DeployKey < ActiveRecord::Base class DeployKey < ActiveRecord::Base
belongs_to :project belongs_to :project
...@@ -10,6 +12,8 @@ class DeployKey < ActiveRecord::Base ...@@ -10,6 +12,8 @@ class DeployKey < ActiveRecord::Base
:uniqueness => true, :uniqueness => true,
:length => { :within => 0..5000 } :length => { :within => 0..5000 }
validates_with UniquePublicKeyValidator
before_save :set_identifier before_save :set_identifier
after_save :update_repository after_save :update_repository
after_destroy :repository_delete_key after_destroy :repository_delete_key
......
require 'unique_public_key_validator'
class Key < ActiveRecord::Base class Key < ActiveRecord::Base
belongs_to :user belongs_to :user
...@@ -10,6 +12,8 @@ class Key < ActiveRecord::Base ...@@ -10,6 +12,8 @@ class Key < ActiveRecord::Base
:uniqueness => true, :uniqueness => true,
:length => { :within => 0..5000 } :length => { :within => 0..5000 }
validates_with UniquePublicKeyValidator
before_save :set_identifier before_save :set_identifier
after_save :update_repository after_save :update_repository
after_destroy :repository_delete_key after_destroy :repository_delete_key
......
class UniquePublicKeyValidator < ActiveModel::Validator
def validate(record)
if (DeployKey.where('key = ? AND id !=?', record.key , record.id).count > 0 || Key.where('key = ? AND id !=?', record.key , record.id).count > 0)
record.errors.add :key, 'already exist.'
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment