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| |