Commit 99b8b577e92831d9cfe4f98fca4c6b8017c95a7a
1 parent
5b4382e1
Exists in
master
and in
4 other branches
DeployKey moved to Key model
Showing
8 changed files
with
35 additions
and
93 deletions
Show diff stats
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 < ActiveRecord::Base | @@ -12,14 +11,16 @@ class Key < 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 < ActiveRecord::Base | @@ -35,10 +36,18 @@ class Key < 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 < ActiveRecord::Base | @@ -14,7 +14,7 @@ class Project < 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 < ActiveRecord::Base | @@ -189,15 +189,15 @@ class Project < 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/schema.rb
@@ -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 => 20111225202855) do | @@ -36,12 +27,13 @@ ActiveRecord::Schema.define(:version => 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| |