DeployKey moved to Key model
This commit is contained in:
parent
5b4382e12e
commit
99b8b577e9
8 changed files with 35 additions and 93 deletions
|
@ -12,28 +12,28 @@ class DeployKeysController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@keys = @project.deploy_keys.all
|
@keys = @project.keys.all
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@key = @project.deploy_keys.find(params[:id])
|
@key = @project.keys.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@key = @project.deploy_keys.new
|
@key = @project.keys.new
|
||||||
|
|
||||||
respond_with(@key)
|
respond_with(@key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@key = @project.deploy_keys.new(params[:deploy_key])
|
@key = @project.keys.new(params[:key])
|
||||||
@key.save
|
@key.save
|
||||||
|
|
||||||
respond_with(@key)
|
respond_with(@key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@key = @project.deploy_keys.find(params[:id])
|
@key = @project.keys.find(params[:id])
|
||||||
@key.destroy
|
@key.destroy
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -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
|
class Key < ActiveRecord::Base
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
belongs_to :project
|
||||||
|
|
||||||
validates :title,
|
validates :title,
|
||||||
:presence => true,
|
:presence => true,
|
||||||
|
@ -12,14 +11,16 @@ 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
|
||||||
|
|
||||||
def set_identifier
|
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
|
end
|
||||||
|
|
||||||
def update_repository
|
def update_repository
|
||||||
|
@ -35,10 +36,18 @@ class Key < ActiveRecord::Base
|
||||||
c.update_projects(projects)
|
c.update_projects(projects)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def is_deploy_key
|
||||||
|
true if project_id
|
||||||
|
end
|
||||||
|
|
||||||
#projects that has this key
|
#projects that has this key
|
||||||
def projects
|
def projects
|
||||||
user.projects
|
if is_deploy_key
|
||||||
|
[project]
|
||||||
|
else
|
||||||
|
user.projects
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
# == Schema Information
|
# == Schema Information
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Project < ActiveRecord::Base
|
||||||
has_many :users, :through => :users_projects
|
has_many :users, :through => :users_projects
|
||||||
has_many :notes, :dependent => :destroy
|
has_many :notes, :dependent => :destroy
|
||||||
has_many :snippets, :dependent => :destroy
|
has_many :snippets, :dependent => :destroy
|
||||||
has_many :deploy_keys, :dependent => :destroy
|
has_many :keys, :dependent => :destroy
|
||||||
has_many :web_hooks, :dependent => :destroy
|
has_many :web_hooks, :dependent => :destroy
|
||||||
|
|
||||||
acts_as_taggable
|
acts_as_taggable
|
||||||
|
@ -189,15 +189,15 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def repository_readers
|
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)
|
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
|
end
|
||||||
|
|
||||||
def repository_writers
|
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)
|
where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_RW)
|
||||||
keys.map(&:identifier)
|
write_keys.map(&:identifier)
|
||||||
end
|
end
|
||||||
|
|
||||||
def readers
|
def readers
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%div
|
%div
|
||||||
= form_for [@project, @key], :remote => true do |f|
|
= form_for [@project, @key], :url => project_deploy_keys_path, :remote => true do |f|
|
||||||
-if @key.errors.any?
|
-if @key.errors.any?
|
||||||
%ul
|
%ul
|
||||||
- @key.errors.full_messages.each do |msg|
|
- @key.errors.full_messages.each do |msg|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
class CreateDeployKeys < ActiveRecord::Migration
|
|
||||||
def change
|
|
||||||
create_table :deploy_keys do |t|
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.text "key"
|
|
||||||
t.string "title"
|
|
||||||
t.string "identifier"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
6
db/migrate/20111231111825_add_project_id_to_key.rb
Normal file
6
db/migrate/20111231111825_add_project_id_to_key.rb
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
class AddProjectIdToKey < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :keys, :project_id, :integer, :null => true
|
||||||
|
change_column :keys, :user_id, :integer, :null => true
|
||||||
|
end
|
||||||
|
end
|
14
db/schema.rb
14
db/schema.rb
|
@ -11,16 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20111225202855) do
|
ActiveRecord::Schema.define(:version => 20111231111825) do
|
||||||
|
|
||||||
create_table "deploy_keys", :force => true do |t|
|
|
||||||
t.integer "project_id", :null => false
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.text "key"
|
|
||||||
t.string "title"
|
|
||||||
t.string "identifier"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "issues", :force => true do |t|
|
create_table "issues", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
|
@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version => 20111225202855) do
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "keys", :force => true do |t|
|
create_table "keys", :force => true do |t|
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.text "key"
|
t.text "key"
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.string "identifier"
|
t.string "identifier"
|
||||||
|
t.integer "project_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "merge_requests", :force => true do |t|
|
create_table "merge_requests", :force => true do |t|
|
||||||
|
|
Loading…
Reference in a new issue