Commit 99b8b577e92831d9cfe4f98fca4c6b8017c95a7a

Authored by miks
1 parent 5b4382e1

DeployKey moved to Key model

app/controllers/deploy_keys_controller.rb
@@ -12,28 +12,28 @@ class DeployKeysController < ApplicationController @@ -12,28 +12,28 @@ class DeployKeysController < ApplicationController
12 end 12 end
13 13
14 def index 14 def index
15 - @keys = @project.deploy_keys.all 15 + @keys = @project.keys.all
16 end 16 end
17 17
18 def show 18 def show
19 - @key = @project.deploy_keys.find(params[:id]) 19 + @key = @project.keys.find(params[:id])
20 end 20 end
21 21
22 def new 22 def new
23 - @key = @project.deploy_keys.new 23 + @key = @project.keys.new
24 24
25 respond_with(@key) 25 respond_with(@key)
26 end 26 end
27 27
28 def create 28 def create
29 - @key = @project.deploy_keys.new(params[:deploy_key]) 29 + @key = @project.keys.new(params[:key])
30 @key.save 30 @key.save
31 31
32 respond_with(@key) 32 respond_with(@key)
33 end 33 end
34 34
35 def destroy 35 def destroy
36 - @key = @project.deploy_keys.find(params[:id]) 36 + @key = @project.keys.find(params[:id])
37 @key.destroy 37 @key.destroy
38 38
39 respond_to do |format| 39 respond_to do |format|
app/models/deploy_key.rb
@@ -1,53 +0,0 @@ @@ -1,53 +0,0 @@
1 -require 'unique_public_key_validator'  
2 -  
3 -class DeployKey < ActiveRecord::Base  
4 - belongs_to :project  
5 -  
6 - validates :title,  
7 - :presence => true,  
8 - :length => { :within => 0..255 }  
9 -  
10 - validates :key,  
11 - :presence => true,  
12 - :uniqueness => true,  
13 - :length => { :within => 0..5000 }  
14 -  
15 - validates_with UniquePublicKeyValidator  
16 -  
17 - before_save :set_identifier  
18 - after_save :update_repository  
19 - after_destroy :repository_delete_key  
20 -  
21 - def set_identifier  
22 - self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"  
23 - end  
24 -  
25 - def update_repository  
26 - Gitlabhq::GitHost.system.new.configure do |c|  
27 - c.update_keys(identifier, key)  
28 - c.update_project(project.path, project)  
29 - end  
30 - end  
31 -  
32 - def repository_delete_key  
33 - Gitlabhq::GitHost.system.new.configure do |c|  
34 - c.delete_key(identifier)  
35 - c.update_project(project.path, project)  
36 - end  
37 - end  
38 -  
39 -end  
40 -# == Schema Information  
41 -#  
42 -# Table name: keys  
43 -#  
44 -# id :integer not null, primary key  
45 -# project_id :integer not null  
46 -# created_at :datetime  
47 -# updated_at :datetime  
48 -# key :text  
49 -# title :string(255)  
50 -# identifier :string(255)  
51 -#  
52 -  
53 -  
app/models/key.rb
1 -require 'unique_public_key_validator'  
2 -  
3 class Key < ActiveRecord::Base 1 class Key < ActiveRecord::Base
4 belongs_to :user 2 belongs_to :user
  3 + belongs_to :project
5 4
6 validates :title, 5 validates :title,
7 :presence => true, 6 :presence => true,
@@ -12,14 +11,16 @@ class Key &lt; ActiveRecord::Base @@ -12,14 +11,16 @@ class Key &lt; ActiveRecord::Base
12 :uniqueness => true, 11 :uniqueness => true,
13 :length => { :within => 0..5000 } 12 :length => { :within => 0..5000 }
14 13
15 - validates_with UniquePublicKeyValidator  
16 -  
17 before_save :set_identifier 14 before_save :set_identifier
18 after_save :update_repository 15 after_save :update_repository
19 after_destroy :repository_delete_key 16 after_destroy :repository_delete_key
20 17
21 def set_identifier 18 def set_identifier
22 - self.identifier = "#{user.identifier}_#{Time.now.to_i}" 19 + if is_deploy_key
  20 + self.identifier = "deploy_#{project.code}_#{Time.now.to_i}"
  21 + else
  22 + self.identifier = "#{user.identifier}_#{Time.now.to_i}"
  23 + end
23 end 24 end
24 25
25 def update_repository 26 def update_repository
@@ -35,10 +36,18 @@ class Key &lt; ActiveRecord::Base @@ -35,10 +36,18 @@ class Key &lt; ActiveRecord::Base
35 c.update_projects(projects) 36 c.update_projects(projects)
36 end 37 end
37 end 38 end
  39 +
  40 + def is_deploy_key
  41 + true if project_id
  42 + end
38 43
39 #projects that has this key 44 #projects that has this key
40 def projects 45 def projects
41 - user.projects 46 + if is_deploy_key
  47 + [project]
  48 + else
  49 + user.projects
  50 + end
42 end 51 end
43 end 52 end
44 # == Schema Information 53 # == Schema Information
app/models/project.rb
@@ -14,7 +14,7 @@ class Project &lt; ActiveRecord::Base @@ -14,7 +14,7 @@ class Project &lt; ActiveRecord::Base
14 has_many :users, :through => :users_projects 14 has_many :users, :through => :users_projects
15 has_many :notes, :dependent => :destroy 15 has_many :notes, :dependent => :destroy
16 has_many :snippets, :dependent => :destroy 16 has_many :snippets, :dependent => :destroy
17 - has_many :deploy_keys, :dependent => :destroy 17 + has_many :keys, :dependent => :destroy
18 has_many :web_hooks, :dependent => :destroy 18 has_many :web_hooks, :dependent => :destroy
19 19
20 acts_as_taggable 20 acts_as_taggable
@@ -189,15 +189,15 @@ class Project &lt; ActiveRecord::Base @@ -189,15 +189,15 @@ class Project &lt; ActiveRecord::Base
189 end 189 end
190 190
191 def repository_readers 191 def repository_readers
192 - keys = Key.joins({:user => :users_projects}). 192 + read_keys = Key.joins({:user => :users_projects}).
193 where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_R) 193 where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_R)
194 - keys.map(&:identifier) + deploy_keys.map(&:identifier) 194 + read_keys.map(&:identifier) + keys.map(&:identifier)
195 end 195 end
196 196
197 def repository_writers 197 def repository_writers
198 - keys = Key.joins({:user => :users_projects}). 198 + write_keys = Key.joins({:user => :users_projects}).
199 where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_RW) 199 where("users_projects.project_id = ? AND users_projects.repo_access = ?", id, Repository::REPO_RW)
200 - keys.map(&:identifier) 200 + write_keys.map(&:identifier)
201 end 201 end
202 202
203 def readers 203 def readers
app/views/deploy_keys/_form.html.haml
1 %div 1 %div
2 - = form_for [@project, @key], :remote => true do |f| 2 + = form_for [@project, @key], :url => project_deploy_keys_path, :remote => true do |f|
3 -if @key.errors.any? 3 -if @key.errors.any?
4 %ul 4 %ul
5 - @key.errors.full_messages.each do |msg| 5 - @key.errors.full_messages.each do |msg|
db/migrate/20111225202855_create_deploy_keys.rb
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -class CreateDeployKeys < ActiveRecord::Migration  
2 - def change  
3 - create_table :deploy_keys do |t|  
4 - t.integer "project_id", :null => false  
5 - t.datetime "created_at"  
6 - t.datetime "updated_at"  
7 - t.text "key"  
8 - t.string "title"  
9 - t.string "identifier"  
10 - end  
11 - end  
12 -end  
db/migrate/20111231111825_add_project_id_to_key.rb 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +class AddProjectIdToKey < ActiveRecord::Migration
  2 + def change
  3 + add_column :keys, :project_id, :integer, :null => true
  4 + change_column :keys, :user_id, :integer, :null => true
  5 + end
  6 +end
@@ -11,16 +11,7 @@ @@ -11,16 +11,7 @@
11 # 11 #
12 # It's strongly recommended to check this file into your version control system. 12 # It's strongly recommended to check this file into your version control system.
13 13
14 -ActiveRecord::Schema.define(:version => 20111225202855) do  
15 -  
16 - create_table "deploy_keys", :force => true do |t|  
17 - t.integer "project_id", :null => false  
18 - t.datetime "created_at"  
19 - t.datetime "updated_at"  
20 - t.text "key"  
21 - t.string "title"  
22 - t.string "identifier"  
23 - end 14 +ActiveRecord::Schema.define(:version => 20111231111825) do
24 15
25 create_table "issues", :force => true do |t| 16 create_table "issues", :force => true do |t|
26 t.string "title" 17 t.string "title"
@@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version =&gt; 20111225202855) do @@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version =&gt; 20111225202855) do
36 end 27 end
37 28
38 create_table "keys", :force => true do |t| 29 create_table "keys", :force => true do |t|
39 - t.integer "user_id", :null => false 30 + t.integer "user_id"
40 t.datetime "created_at" 31 t.datetime "created_at"
41 t.datetime "updated_at" 32 t.datetime "updated_at"
42 t.text "key" 33 t.text "key"
43 t.string "title" 34 t.string "title"
44 t.string "identifier" 35 t.string "identifier"
  36 + t.integer "project_id"
45 end 37 end
46 38
47 create_table "merge_requests", :force => true do |t| 39 create_table "merge_requests", :force => true do |t|