parent
be85fde663
commit
756185533c
5 changed files with 110 additions and 97 deletions
|
@ -202,8 +202,31 @@
|
|||
min-width: 200px;
|
||||
}
|
||||
|
||||
.deploy-project-label {
|
||||
margin: 1px;
|
||||
.deploy-key-content {
|
||||
@media (min-width: $screen-sm-min) {
|
||||
float: left;
|
||||
|
||||
&:last-child {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.deploy-key-projects {
|
||||
@media (min-width: $screen-sm-min) {
|
||||
line-height: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
a.deploy-project-label {
|
||||
padding: 5px;
|
||||
margin-right: 5px;
|
||||
color: $gl-gray;
|
||||
background-color: $row-hover;
|
||||
|
||||
&:hover {
|
||||
color: $gl-link-color;
|
||||
}
|
||||
}
|
||||
|
||||
.vs-public {
|
||||
|
|
|
@ -7,31 +7,24 @@ class Projects::DeployKeysController < Projects::ApplicationController
|
|||
layout "project_settings"
|
||||
|
||||
def index
|
||||
@enabled_keys = @project.deploy_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
|
||||
@key = DeployKey.new
|
||||
set_index_vars
|
||||
end
|
||||
|
||||
def new
|
||||
@key = @project.deploy_keys.new
|
||||
|
||||
respond_with(@key)
|
||||
redirect_to namespace_project_deploy_keys_path(@project.namespace,
|
||||
@project)
|
||||
end
|
||||
|
||||
def create
|
||||
@key = DeployKey.new(deploy_key_params)
|
||||
set_index_vars
|
||||
|
||||
if @key.valid? && @project.deploy_keys << @key
|
||||
redirect_to namespace_project_deploy_keys_path(@project.namespace,
|
||||
@project)
|
||||
else
|
||||
render "new"
|
||||
render "index"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -51,6 +44,18 @@ class Projects::DeployKeysController < Projects::ApplicationController
|
|||
|
||||
protected
|
||||
|
||||
def set_index_vars
|
||||
@enabled_keys ||= @project.deploy_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 accessible_keys
|
||||
@accessible_keys ||= current_user.accessible_deploy_keys
|
||||
end
|
||||
|
|
|
@ -1,32 +1,27 @@
|
|||
%li
|
||||
.pull-right
|
||||
.pull-left.append-right-10.hidden-xs
|
||||
= icon "key", class: "key-icon"
|
||||
.deploy-key-content.key-list-item-info
|
||||
%strong.title
|
||||
= deploy_key.title
|
||||
.description
|
||||
= deploy_key.fingerprint
|
||||
.deploy-key-content.prepend-left-default.deploy-key-projects
|
||||
- deploy_key.projects.each do |project|
|
||||
- if can?(current_user, :read_project, project)
|
||||
= link_to namespace_project_path(project.namespace, project), class: "label deploy-project-label" do
|
||||
= project.name_with_namespace
|
||||
.deploy-key-content
|
||||
%span.key-created-at
|
||||
created #{time_ago_with_tooltip(deploy_key.created_at)}
|
||||
.visible-xs-block.visible-sm-block
|
||||
- if @available_keys.include?(deploy_key)
|
||||
= link_to enable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: 'btn btn-sm', method: :put do
|
||||
= icon('plus')
|
||||
= link_to enable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: "btn btn-sm prepend-left-10", method: :put do
|
||||
Enable
|
||||
- else
|
||||
- if deploy_key.destroyed_when_orphaned? && deploy_key.almost_orphaned?
|
||||
= link_to 'Remove', disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), data: { confirm: 'You are going to remove deploy key. Are you sure?'}, method: :put, class: "btn btn-remove delete-key btn-sm pull-right"
|
||||
= link_to disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), data: { confirm: "You are going to remove deploy key. Are you sure?" }, method: :put, class: "btn btn-warning btn-sm prepend-left-10" do
|
||||
Remove
|
||||
- else
|
||||
= link_to disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: 'btn btn-sm', method: :put do
|
||||
= icon('power-off')
|
||||
= link_to disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: "btn btn-warning btn-sm prepend-left-10", method: :put do
|
||||
Disable
|
||||
|
||||
= icon('key')
|
||||
%strong= deploy_key.title
|
||||
%br
|
||||
%code.key-fingerprint= deploy_key.fingerprint
|
||||
|
||||
%p.light.prepend-top-10
|
||||
- if deploy_key.public?
|
||||
%span.label.label-info.deploy-project-label
|
||||
Public deploy key
|
||||
|
||||
- deploy_key.projects.each do |project|
|
||||
- if can?(current_user, :read_project, project)
|
||||
%span.label.label-gray.deploy-project-label
|
||||
= link_to namespace_project_path(project.namespace, project) do
|
||||
= project.name_with_namespace
|
||||
|
||||
%small.pull-right
|
||||
Created #{time_ago_with_tooltip(deploy_key.created_at)}
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
%div
|
||||
= form_for [@project.namespace.becomes(Namespace), @project, @key], url: namespace_project_deploy_keys_path, html: { class: 'deploy-key-form form-horizontal js-requires-input' } do |f|
|
||||
= form_for [@project.namespace.becomes(Namespace), @project, @key], url: namespace_project_deploy_keys_path, html: { class: "js-requires-input" } do |f|
|
||||
= form_errors(@key)
|
||||
|
||||
.form-group
|
||||
= f.label :title, class: "control-label"
|
||||
.col-sm-10= f.text_field :title, class: 'form-control', autofocus: true, required: true
|
||||
= f.label :title, class: "label-light"
|
||||
= f.text_field :title, class: 'form-control', autofocus: true, required: true
|
||||
.form-group
|
||||
= f.label :key, class: "control-label"
|
||||
.col-sm-10
|
||||
%p.light
|
||||
= f.label :key, class: "label-light"
|
||||
= f.text_area :key, class: "form-control", rows: 5, required: true
|
||||
.form-group
|
||||
%p.light.append-bottom-0
|
||||
Paste a machine public key here. Read more about how to generate it
|
||||
= link_to "here", help_page_path("ssh", "README")
|
||||
= f.text_area :key, class: "form-control thin_area", rows: 5, required: true
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Create Deploy Key', class: "btn-create btn"
|
||||
= link_to "Cancel", namespace_project_deploy_keys_path(@project.namespace, @project), class: "btn btn-cancel"
|
||||
= f.submit "Add key", class: "btn-create btn"
|
||||
|
|
|
@ -1,43 +1,38 @@
|
|||
- page_title "Deploy Keys"
|
||||
|
||||
%h3.page-title
|
||||
Deploy keys allow read-only access to the repository
|
||||
|
||||
= link_to new_namespace_project_deploy_key_path(@project.namespace, @project), class: "btn btn-new pull-right", title: "New Deploy Key" do
|
||||
%i.fa.fa-plus
|
||||
New Deploy Key
|
||||
|
||||
%p.light
|
||||
Deploy keys can be used for CI, staging or production servers.
|
||||
You can create a deploy key or add an existing one
|
||||
|
||||
%hr.clearfix
|
||||
|
||||
.row
|
||||
.col-md-6.enabled-keys
|
||||
%h5
|
||||
%strong.cgreen Enabled deploy keys
|
||||
for this project
|
||||
%ul.bordered-list
|
||||
.row.prepend-top-default
|
||||
.col-lg-3.profile-settings-sidebar
|
||||
%h4.prepend-top-0
|
||||
= page_title
|
||||
%p
|
||||
Deploy keys allow read-only access to your repository. Deploy keys can be used for CI, staging or production servers. You can create a deploy key or add an existing one.
|
||||
.col-lg-9
|
||||
%h5.prepend-top-0
|
||||
Create a new deploy key for this project
|
||||
= render "form"
|
||||
.col-lg-9.col-lg-offset-3
|
||||
%hr
|
||||
.col-lg-9.col-lg-offset-3.append-bottom-default
|
||||
%h5.prepend-top-0
|
||||
Enabled deploy keys for this project (#{@enabled_keys.size})
|
||||
- if @enabled_keys.any?
|
||||
%ul.well-list
|
||||
= render @enabled_keys
|
||||
- if @enabled_keys.blank?
|
||||
.light-well
|
||||
.nothing-here-block Create a #{link_to 'new deploy key', new_namespace_project_deploy_key_path(@project.namespace, @project)} or add an existing one
|
||||
.col-md-6.available-keys
|
||||
- # If there are available public deploy keys but no available project deploy keys, only public deploy keys are shown.
|
||||
- if @available_project_keys.any? || @available_public_keys.blank?
|
||||
%h5
|
||||
%strong Deploy keys
|
||||
from projects you have access to
|
||||
%ul.bordered-list
|
||||
- else
|
||||
.profile-settings-message.text-center
|
||||
No deploy keys found. Create one with the form above or add existing one below.
|
||||
.col-lg-9.col-lg-offset-3.append-bottom-default
|
||||
%h5.prepend-top-0
|
||||
Deploy keys from projects you have access to (#{@available_project_keys.size})
|
||||
- if @available_project_keys.any?
|
||||
%ul.well-list
|
||||
= render @available_project_keys
|
||||
- if @available_project_keys.blank?
|
||||
.light-well
|
||||
.nothing-here-block Deploy keys from projects you have access to will be displayed here
|
||||
|
||||
- else
|
||||
.profile-settings-message.text-center
|
||||
No deploy keys from your projects could be found. Create one with the form above or add existing one below.
|
||||
- if @available_public_keys.any?
|
||||
%h5
|
||||
%strong Public deploy keys
|
||||
available to any project
|
||||
%ul.bordered-list
|
||||
.col-lg-9.col-lg-offset-3.append-bottom-default
|
||||
%h5.prepend-top-0
|
||||
Public deploy keys available to any project (#{@available_public_keys.size})
|
||||
%ul.well-list
|
||||
= render @available_public_keys
|
||||
|
|
Loading…
Reference in a new issue