DeployKey moved to Key model
This commit is contained in:
parent
5b4382e12e
commit
99b8b577e9
8 changed files with 35 additions and 93 deletions
|
@ -1,53 +0,0 @@
|
|||
require 'unique_public_key_validator'
|
||||
|
||||
class DeployKey < ActiveRecord::Base
|
||||
belongs_to :project
|
||||
|
||||
validates :title,
|
||||
:presence => true,
|
||||
:length => { :within => 0..255 }
|
||||
|
||||
validates :key,
|
||||
:presence => true,
|
||||
:uniqueness => true,
|
||||
:length => { :within => 0..5000 }
|
||||
|
||||
validates_with UniquePublicKeyValidator
|
||||
|
||||
before_save :set_identifier
|
||||
after_save :update_repository
|
||||
after_destroy :repository_delete_key
|
||||
|
||||
def set_identifier
|
||||
self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"
|
||||
end
|
||||
|
||||
def update_repository
|
||||
Gitlabhq::GitHost.system.new.configure do |c|
|
||||
c.update_keys(identifier, key)
|
||||
c.update_project(project.path, project)
|
||||
end
|
||||
end
|
||||
|
||||
def repository_delete_key
|
||||
Gitlabhq::GitHost.system.new.configure do |c|
|
||||
c.delete_key(identifier)
|
||||
c.update_project(project.path, project)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: keys
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# project_id :integer not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# key :text
|
||||
# title :string(255)
|
||||
# identifier :string(255)
|
||||
#
|
||||
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
require 'unique_public_key_validator'
|
||||
|
||||
class Key < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :project
|
||||
|
||||
validates :title,
|
||||
:presence => true,
|
||||
|
@ -12,14 +11,16 @@ class Key < ActiveRecord::Base
|
|||
:uniqueness => true,
|
||||
:length => { :within => 0..5000 }
|
||||
|
||||
validates_with UniquePublicKeyValidator
|
||||
|
||||
before_save :set_identifier
|
||||
after_save :update_repository
|
||||
after_destroy :repository_delete_key
|
||||
|
||||
def set_identifier
|
||||
self.identifier = "#{user.identifier}_#{Time.now.to_i}"
|
||||
if is_deploy_key
|
||||
self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"
|
||||
else
|
||||
self.identifier = "#{user.identifier}_#{Time.now.to_i}"
|
||||
end
|
||||
end
|
||||
|
||||
def update_repository
|
||||
|
@ -35,10 +36,18 @@ class Key < ActiveRecord::Base
|
|||
c.update_projects(projects)
|
||||
end
|
||||
end
|
||||
|
||||
def is_deploy_key
|
||||
true if project_id
|
||||
end
|
||||
|
||||
#projects that has this key
|
||||
def projects
|
||||
user.projects
|
||||
if is_deploy_key
|
||||
[project]
|
||||
else
|
||||
user.projects
|
||||
end
|
||||
end
|
||||
end
|
||||
# == Schema Information
|
||||
|
|
|
@ -14,7 +14,7 @@ class Project < ActiveRecord::Base
|
|||
has_many :users, :through => :users_projects
|
||||
has_many :notes, :dependent => :destroy
|
||||
has_many :snippets, :dependent => :destroy
|
||||
has_many :deploy_keys, :dependent => :destroy
|
||||
has_many :keys, :dependent => :destroy
|
||||
has_many :web_hooks, :dependent => :destroy
|
||||
|
||||
acts_as_taggable
|
||||
|
@ -189,15 +189,15 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def repository_readers
|
||||
keys = Key.joins({:user => :users_projects}).
|
||||
read_keys = Key.joins({:user => :users_projects}).
|
||||
where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_R)
|
||||
keys.map(&:identifier) + deploy_keys.map(&:identifier)
|
||||
read_keys.map(&:identifier) + keys.map(&:identifier)
|
||||
end
|
||||
|
||||
def repository_writers
|
||||
keys = Key.joins({:user => :users_projects}).
|
||||
write_keys = Key.joins({:user => :users_projects}).
|
||||
where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_RW)
|
||||
keys.map(&:identifier)
|
||||
write_keys.map(&:identifier)
|
||||
end
|
||||
|
||||
def readers
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue