Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-13 12:08:13 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-13 12:08:13 +0300
commit9c14ed0689ba3e667adbcc179793d7d14d776f79 (patch)
treeb6405e97498338975511e302dc7c43f6430a1ecf /app/controllers
parent0c24192fb1190f94e8b324605cf2cd972cc62c0c (diff)
parent6237cae1f16475d874ea761a62350344bdbff617 (diff)
Merge branch 'public-deploy-keys' into 'master'
Allow admin to create public deploy keys that are accessible to any project. Addresses private issue https://dev.gitlab.org/gitlab/gitlabhq/issues/1774. Project settings: ![Screen_Shot_2015-03-27_at_14.46.48](https://gitlab.com/gitlab-org/gitlab-ce/uploads/01799ff912671ba6db3f828ea1aca1a6/Screen_Shot_2015-03-27_at_14.46.48.png) The "Public deploy keys" section is only shown when there are any. If there are public deploy keys but no project deploy keys, only public deploy keys are shown. If there are no public deploy keys and no project deploy keys, the current "Deploy keys from projects you have access to will be displayed here" placeholder is shown. The list of projects below the public key has been changed to only show projects the user has access to. "Public deploy key" seems to be repeated on the left, but the first is just the title. The label is always visible for public deploy keys. Admin index: ![Screen_Shot_2015-03-27_at_14.47.06](https://gitlab.com/gitlab-org/gitlab-ce/uploads/ea889d274cfd3f0694d47d602f4f3e94/Screen_Shot_2015-03-27_at_14.47.06.png) Admin detail page: ![Screen_Shot_2015-03-27_at_14.47.16](https://gitlab.com/gitlab-org/gitlab-ce/uploads/8c8475e05bf6b497da3b9f1bc102329f/Screen_Shot_2015-03-27_at_14.47.16.png) Projects using the deploy key are listed on the left and can be disabled easily. See merge request !469
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/admin/deploy_keys_controller.rb49
-rw-r--r--app/controllers/projects/deploy_keys_controller.rb29
2 files changed, 62 insertions, 16 deletions
diff --git a/app/controllers/admin/deploy_keys_controller.rb b/app/controllers/admin/deploy_keys_controller.rb
new file mode 100644
index 00000000000..e93603bef36
--- /dev/null
+++ b/app/controllers/admin/deploy_keys_controller.rb
@@ -0,0 +1,49 @@
+class Admin::DeployKeysController < Admin::ApplicationController
+ before_filter :deploy_keys, only: [:index]
+ before_filter :deploy_key, only: [:show, :destroy]
+
+ def index
+
+ end
+
+ def show
+
+ end
+
+ def new
+ @deploy_key = deploy_keys.new
+ end
+
+ def create
+ @deploy_key = deploy_keys.new(deploy_key_params)
+
+ 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 ||= deploy_keys.find(params[:id])
+ end
+
+ def deploy_keys
+ @deploy_keys ||= DeployKey.are_public
+ 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..6fba3ce299b 100644
--- a/app/controllers/projects/deploy_keys_controller.rb
+++ b/app/controllers/projects/deploy_keys_controller.rb
@@ -8,7 +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 - @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
@@ -32,18 +39,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 = accessible_keys.find(params[:id])
+ @project.deploy_keys << @key
redirect_to namespace_project_deploy_keys_path(@project.namespace,
@project)
@@ -52,14 +50,13 @@ 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
- 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