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 12 end
13 13  
14 14 def index
15   - @keys = @project.deploy_keys.all
  15 + @keys = @project.keys.all
16 16 end
17 17  
18 18 def show
19   - @key = @project.deploy_keys.find(params[:id])
  19 + @key = @project.keys.find(params[:id])
20 20 end
21 21  
22 22 def new
23   - @key = @project.deploy_keys.new
  23 + @key = @project.keys.new
24 24  
25 25 respond_with(@key)
26 26 end
27 27  
28 28 def create
29   - @key = @project.deploy_keys.new(params[:deploy_key])
  29 + @key = @project.keys.new(params[:key])
30 30 @key.save
31 31  
32 32 respond_with(@key)
33 33 end
34 34  
35 35 def destroy
36   - @key = @project.deploy_keys.find(params[:id])
  36 + @key = @project.keys.find(params[:id])
37 37 @key.destroy
38 38  
39 39 respond_to do |format|
... ...
app/models/deploy_key.rb
... ... @@ -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 1 class Key < ActiveRecord::Base
4 2 belongs_to :user
  3 + belongs_to :project
5 4  
6 5 validates :title,
7 6 :presence => true,
... ... @@ -12,14 +11,16 @@ class Key &lt; ActiveRecord::Base
12 11 :uniqueness => true,
13 12 :length => { :within => 0..5000 }
14 13  
15   - validates_with UniquePublicKeyValidator
16   -
17 14 before_save :set_identifier
18 15 after_save :update_repository
19 16 after_destroy :repository_delete_key
20 17  
21 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 24 end
24 25  
25 26 def update_repository
... ... @@ -35,10 +36,18 @@ class Key &lt; ActiveRecord::Base
35 36 c.update_projects(projects)
36 37 end
37 38 end
  39 +
  40 + def is_deploy_key
  41 + true if project_id
  42 + end
38 43  
39 44 #projects that has this key
40 45 def projects
41   - user.projects
  46 + if is_deploy_key
  47 + [project]
  48 + else
  49 + user.projects
  50 + end
42 51 end
43 52 end
44 53 # == Schema Information
... ...
app/models/project.rb
... ... @@ -14,7 +14,7 @@ class Project &lt; ActiveRecord::Base
14 14 has_many :users, :through => :users_projects
15 15 has_many :notes, :dependent => :destroy
16 16 has_many :snippets, :dependent => :destroy
17   - has_many :deploy_keys, :dependent => :destroy
  17 + has_many :keys, :dependent => :destroy
18 18 has_many :web_hooks, :dependent => :destroy
19 19  
20 20 acts_as_taggable
... ... @@ -189,15 +189,15 @@ class Project &lt; ActiveRecord::Base
189 189 end
190 190  
191 191 def repository_readers
192   - keys = Key.joins({:user => :users_projects}).
  192 + read_keys = Key.joins({:user => :users_projects}).
193 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 195 end
196 196  
197 197 def repository_writers
198   - keys = Key.joins({:user => :users_projects}).
  198 + write_keys = Key.joins({:user => :users_projects}).
199 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 201 end
202 202  
203 203 def readers
... ...
app/views/deploy_keys/_form.html.haml
1 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 3 -if @key.errors.any?
4 4 %ul
5 5 - @key.errors.full_messages.each do |msg|
... ...
db/migrate/20111225202855_create_deploy_keys.rb
... ... @@ -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 @@
  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
... ...
db/schema.rb
... ... @@ -11,16 +11,7 @@
11 11 #
12 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 16 create_table "issues", :force => true do |t|
26 17 t.string "title"
... ... @@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version =&gt; 20111225202855) do
36 27 end
37 28  
38 29 create_table "keys", :force => true do |t|
39   - t.integer "user_id", :null => false
  30 + t.integer "user_id"
40 31 t.datetime "created_at"
41 32 t.datetime "updated_at"
42 33 t.text "key"
43 34 t.string "title"
44 35 t.string "identifier"
  36 + t.integer "project_id"
45 37 end
46 38  
47 39 create_table "merge_requests", :force => true do |t|
... ...