diff options
Diffstat (limited to 'app/controllers/projects/deploy_keys_controller.rb')
-rw-r--r-- | app/controllers/projects/deploy_keys_controller.rb | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb new file mode 100644 index 00000000000..0750e0a146f --- /dev/null +++ b/app/controllers/projects/deploy_keys_controller.rb @@ -0,0 +1,61 @@ +class Projects::DeployKeysController < Projects::ApplicationController + respond_to :html + + # Authorize + before_filter :authorize_admin_project! + + layout "project_settings" + + def index + @enabled_keys = @project.deploy_keys.all + @available_keys = available_keys - @enabled_keys + end + + def show + @key = @project.deploy_keys.find(params[:id]) + end + + def new + @key = @project.deploy_keys.new + + respond_with(@key) + end + + def create + @key = DeployKey.new(params[:deploy_key]) + + if @key.valid? && @project.deploy_keys << @key + redirect_to project_deploy_keys_path(@project) + else + render "new" + end + end + + def destroy + @key = @project.deploy_keys.find(params[:id]) + @key.destroy + + respond_to do |format| + format.html { redirect_to project_deploy_keys_url } + format.js { render nothing: true } + end + end + + def enable + project.deploy_keys << available_keys.find(params[:id]) + + redirect_to project_deploy_keys_path(@project) + end + + def disable + @project.deploy_keys_projects.where(deploy_key_id: params[:id]).last.destroy + + redirect_to project_deploy_keys_path(@project) + end + + protected + + def available_keys + @available_keys ||= current_user.accessible_deploy_keys + end +end |