From edc4a56d26792b5b5bac21f45948412675ad7ebb Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 27 Mar 2015 14:43:48 +0100 Subject: Allow admin to create public deploy keys that are accessible to any project. --- app/controllers/admin/deploy_keys_controller.rb | 45 ++++++++++++++++++++++ app/controllers/projects/deploy_keys_controller.rb | 18 +++------ 2 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 app/controllers/admin/deploy_keys_controller.rb (limited to 'app/controllers') diff --git a/app/controllers/admin/deploy_keys_controller.rb b/app/controllers/admin/deploy_keys_controller.rb new file mode 100644 index 00000000000..0664b26ddda --- /dev/null +++ b/app/controllers/admin/deploy_keys_controller.rb @@ -0,0 +1,45 @@ +class Admin::DeployKeysController < Admin::ApplicationController + before_filter :deploy_key, only: [:show, :destroy] + + def index + @deploy_keys = DeployKey.are_public + end + + def show + + end + + def new + @deploy_key = DeployKey.new(public: true) + end + + def create + @deploy_key = DeployKey.new(deploy_key_params) + @deploy_key.public = true + + if @deploy_key.save + redirect_to admin_deploy_keys_path + else + render "new" + end + end + + def destroy + deploy_key.destroy + + respond_to do |format| + format.html { redirect_to admin_deploy_keys_path } + format.json { head :ok } + end + end + + protected + + def deploy_key + @deploy_key ||= DeployKey.find(params[:id]) + end + + def deploy_key_params + params.require(:deploy_key).permit(:key, :title) + end +end diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb index 679a5d76ec0..176d112a4d7 100644 --- a/app/controllers/projects/deploy_keys_controller.rb +++ b/app/controllers/projects/deploy_keys_controller.rb @@ -9,6 +9,8 @@ class Projects::DeployKeysController < Projects::ApplicationController def index @enabled_keys = @project.deploy_keys @available_keys = available_keys - @enabled_keys + @available_project_keys = current_user.project_deploy_keys - @enabled_keys + @available_public_keys = DeployKey.are_public - @available_project_keys - @enabled_keys end def show @@ -32,18 +34,9 @@ class Projects::DeployKeysController < Projects::ApplicationController end end - def destroy - @key = @project.deploy_keys.find(params[:id]) - @key.destroy - - respond_to do |format| - format.html { redirect_to namespace_project_deploy_keys_path(@project.namespace, @project) } - format.js { render nothing: true } - end - end - def enable - @project.deploy_keys << available_keys.find(params[:id]) + @key = current_user.accessible_deploy_keys.find(params[:id]) + @project.deploy_keys << @key redirect_to namespace_project_deploy_keys_path(@project.namespace, @project) @@ -52,8 +45,7 @@ class Projects::DeployKeysController < Projects::ApplicationController def disable @project.deploy_keys_projects.find_by(deploy_key_id: params[:id]).destroy - redirect_to namespace_project_deploy_keys_path(@project.namespace, - @project) + redirect_to :back end protected -- cgit v1.2.3 From ed097df62758880eb6412770f661266d4a6e9299 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 3 Apr 2015 12:22:44 +0200 Subject: Clean up code. --- app/controllers/admin/deploy_keys_controller.rb | 14 +++++++++----- app/controllers/projects/deploy_keys_controller.rb | 15 ++++++++++----- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'app/controllers') diff --git a/app/controllers/admin/deploy_keys_controller.rb b/app/controllers/admin/deploy_keys_controller.rb index 0664b26ddda..e93603bef36 100644 --- a/app/controllers/admin/deploy_keys_controller.rb +++ b/app/controllers/admin/deploy_keys_controller.rb @@ -1,8 +1,9 @@ class Admin::DeployKeysController < Admin::ApplicationController + before_filter :deploy_keys, only: [:index] before_filter :deploy_key, only: [:show, :destroy] def index - @deploy_keys = DeployKey.are_public + end def show @@ -10,12 +11,11 @@ class Admin::DeployKeysController < Admin::ApplicationController end def new - @deploy_key = DeployKey.new(public: true) + @deploy_key = deploy_keys.new end def create - @deploy_key = DeployKey.new(deploy_key_params) - @deploy_key.public = true + @deploy_key = deploy_keys.new(deploy_key_params) if @deploy_key.save redirect_to admin_deploy_keys_path @@ -36,7 +36,11 @@ class Admin::DeployKeysController < Admin::ApplicationController protected def deploy_key - @deploy_key ||= DeployKey.find(params[:id]) + @deploy_key ||= deploy_keys.find(params[:id]) + end + + def deploy_keys + @deploy_keys ||= DeployKey.are_public end def deploy_key_params diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb index 176d112a4d7..6fba3ce299b 100644 --- a/app/controllers/projects/deploy_keys_controller.rb +++ b/app/controllers/projects/deploy_keys_controller.rb @@ -8,9 +8,14 @@ class Projects::DeployKeysController < Projects::ApplicationController def index @enabled_keys = @project.deploy_keys - @available_keys = available_keys - @enabled_keys + + @available_keys = accessible_keys - @enabled_keys @available_project_keys = current_user.project_deploy_keys - @enabled_keys - @available_public_keys = DeployKey.are_public - @available_project_keys - @enabled_keys + @available_public_keys = DeployKey.are_public - @enabled_keys + + # Public keys that are already used by another accessible project are already + # in @available_project_keys. + @available_public_keys -= @available_project_keys end def show @@ -35,7 +40,7 @@ class Projects::DeployKeysController < Projects::ApplicationController end def enable - @key = current_user.accessible_deploy_keys.find(params[:id]) + @key = accessible_keys.find(params[:id]) @project.deploy_keys << @key redirect_to namespace_project_deploy_keys_path(@project.namespace, @@ -50,8 +55,8 @@ class Projects::DeployKeysController < Projects::ApplicationController protected - def available_keys - @available_keys ||= current_user.accessible_deploy_keys + def accessible_keys + @accessible_keys ||= current_user.accessible_deploy_keys end def deploy_key_params -- cgit v1.2.3