Commit d204c8f8 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce

parents 28b6cde3 971e57cf
No related merge requests found
...@@ -23,6 +23,13 @@ pre { ...@@ -23,6 +23,13 @@ pre {
font-family: $monospace_font; font-family: $monospace_font;
} }
code {
&.key-fingerprint {
background: $body-bg;
color: $text-color;
}
}
/** /**
* Wiki typography * Wiki typography
* *
......
class Admin::DeployKeysController < Admin::ApplicationController class Admin::DeployKeysController < Admin::ApplicationController
before_action :deploy_keys, only: [:index] before_action :deploy_keys, only: [:index]
before_action :deploy_key, only: [:show, :destroy] before_action :deploy_key, only: [:destroy]
def index def index
end
def show
end end
def new def new
......
...@@ -18,10 +18,6 @@ class Projects::DeployKeysController < Projects::ApplicationController ...@@ -18,10 +18,6 @@ class Projects::DeployKeysController < Projects::ApplicationController
@available_public_keys -= @available_project_keys @available_public_keys -= @available_project_keys
end end
def show
@key = @project.deploy_keys.find(params[:id])
end
def new def new
@key = @project.deploy_keys.new @key = @project.deploy_keys.new
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
= link_to admin_deploy_key_path(deploy_key) do = link_to admin_deploy_key_path(deploy_key) do
%strong= deploy_key.title %strong= deploy_key.title
%td %td
%span %code.key-fingerprint= deploy_key.fingerprint
(#{deploy_key.fingerprint})
%td %td
%span.cgray %span.cgray
added #{time_ago_with_tooltip(deploy_key.created_at)} added #{time_ago_with_tooltip(deploy_key.created_at)}
......
- page_title @deploy_key.title, "Deploy Keys"
.row
.col-md-4
.panel.panel-default
.panel-heading
Deploy Key
%ul.well-list
%li
%span.light Title:
%strong= @deploy_key.title
%li
%span.light Created on:
%strong= @deploy_key.created_at.stamp("Aug 21, 2011")
.panel.panel-default
.panel-heading Projects (#{@deploy_key.deploy_keys_projects.count})
- if @deploy_key.deploy_keys_projects.any?
%ul.well-list
- @deploy_key.projects.each do |project|
%li
%span
%strong
= link_to project.name_with_namespace, [:admin, project.namespace.becomes(Namespace), project]
.pull-right
= link_to disable_namespace_project_deploy_key_path(project.namespace, project, @deploy_key), data: { confirm: "Are you sure?" }, method: :put, class: "btn-xs btn btn-remove", title: 'Remove deploy key from project' do
%i.fa.fa-times.fa-inverse
.col-md-8
%p
%span.light Fingerprint:
%strong= @deploy_key.fingerprint
%pre.well-pre
= @deploy_key.key
.pull-right
= link_to 'Remove', admin_deploy_key_path(@deploy_key), data: {confirm: 'Are you sure?'}, method: :delete, class: "btn btn-remove delete-key"
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
= link_to path_to_key(key, is_admin) do = link_to path_to_key(key, is_admin) do
%strong= key.title %strong= key.title
%td %td
%span %code.key-fingerprint= key.fingerprint
(#{key.fingerprint})
%td %td
%span.cgray %span.cgray
added #{time_ago_with_tooltip(key.created_at)} added #{time_ago_with_tooltip(key.created_at)}
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
.col-md-8 .col-md-8
%p %p
%span.light Fingerprint: %span.light Fingerprint:
%strong= @key.fingerprint %code.key-fingerprint= @key.fingerprint
%pre.well-pre %pre.well-pre
= @key.key = @key.key
.pull-right .pull-right
......
...@@ -2,24 +2,20 @@ ...@@ -2,24 +2,20 @@
.pull-right .pull-right
- if @available_keys.include?(deploy_key) - 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 = link_to enable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: 'btn btn-sm', method: :put do
%i.fa.fa-plus = icon('plus')
Enable Enable
- else - else
- if deploy_key.destroyed_when_orphaned? && deploy_key.almost_orphaned? - 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 '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"
- else - else
= link_to disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: 'btn btn-sm', method: :put do = link_to disable_namespace_project_deploy_key_path(@project.namespace, @project, deploy_key), class: 'btn btn-sm', method: :put do
%i.fa.fa-power-off = icon('power-off')
Disable Disable
- if project = project_for_deploy_key(deploy_key) = icon('key')
= link_to namespace_project_deploy_key_path(project.namespace, project, deploy_key) do %strong= deploy_key.title
%i.fa.fa-key %br
%strong= deploy_key.title %code.key-fingerprint= deploy_key.fingerprint
- else
%i.fa.fa-key
%strong= deploy_key.title
%p.light.prepend-top-10 %p.light.prepend-top-10
- if deploy_key.public? - if deploy_key.public?
......
- page_title @key.title, "Deploy Keys"
%h3.page-title
Deploy key:
= @key.title
%small
created on
= @key.created_at.stamp("Aug 21, 2011")
.back-link
= link_to namespace_project_deploy_keys_path(@project.namespace, @project) do
&larr; To keys list
%hr
%pre= @key.key
.pull-right
= link_to 'Remove', namespace_project_deploy_key_path(@project.namespace, @project, @key), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn-remove btn delete-key"
...@@ -165,7 +165,7 @@ Gitlab::Application.routes.draw do ...@@ -165,7 +165,7 @@ Gitlab::Application.routes.draw do
end end
end end
resources :deploy_keys, only: [:index, :show, :new, :create, :destroy] resources :deploy_keys, only: [:index, :new, :create, :destroy]
resources :hooks, only: [:index, :create, :destroy] do resources :hooks, only: [:index, :create, :destroy] do
get :test get :test
...@@ -421,7 +421,7 @@ Gitlab::Application.routes.draw do ...@@ -421,7 +421,7 @@ Gitlab::Application.routes.draw do
end end
end end
resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :show, :new, :create] do resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create] do
member do member do
put :enable put :enable
put :disable put :disable
......
doc/workflow/2fa.png

22.9 KB

doc/workflow/2fa_auth.png

15.2 KB

...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
- [Migrating from SVN to GitLab](migrating_from_svn.md) - [Migrating from SVN to GitLab](migrating_from_svn.md)
- [Project importing from GitHub to GitLab](import_projects_from_github.md) - [Project importing from GitHub to GitLab](import_projects_from_github.md)
- [Project importing from GitLab.com to your private GitLab instance](import_projects_from_gitlab_com.md) - [Project importing from GitLab.com to your private GitLab instance](import_projects_from_gitlab_com.md)
- [Two-factor Authentication (2FA)](two_factor_authentication.md)
- [Protected branches](protected_branches.md) - [Protected branches](protected_branches.md)
- [Change your time zone](timezone.md) - [Change your time zone](timezone.md)
- [Keyboard shortcuts](shortcuts.md) - [Keyboard shortcuts](shortcuts.md)
- [Web Editor](web_editor.md) - [Web Editor](web_editor.md)
\ No newline at end of file
# Two-factor Authentication (2FA)
Two-factor Authentication (2FA) provides an additional level of security to your
GitLab account. Once enabled, in addition to supplying your username and
password to login, you'll be prompted for a code generated by an application on
your phone.
By enabling 2FA, the only way someone other than you can log into your account
is to know your username and password *and* have access to your phone.
## Enabling 2FA
**In GitLab:**
1. Log in to your GitLab account.
1. Go to your **Profile Settings**.
1. Go to **Account**.
1. Click **Enable Two-factor Authentication**.
![Two-factor setup](2fa.png)
**On your phone:**
1. Install a compatible application. We recommend [Google Authenticator].
1. In the application, add a new entry in one of two ways:
* Scan the code with your phone's camera to add the entry automatically.
* Enter the details provided to add the entry manually.
**In GitLab:**
1. Enter the six-digit pin number from the entry on your phone into the **Pin
code** field.
1. Click **Submit**.
If the pin you entered was correct, you'll see a message indicating that
Two-factor Authentication has been enabled, and you'll be presented with a list
of recovery codes.
## Recovery Codes
Should you ever lose access to your phone, you can use one of the ten provided
backup codes to login to your account. We suggest copying or printing them for
storage in a safe place. **Each code can be used only once** to log in to your
account.
If you lose the recovery codes or just want to generate new ones, you can do so
from the **Profile Settings** > **Acount** page where you first enabled 2FA.
## Logging in with 2FA Enabled
Logging in with 2FA enabled is only slightly different than a normal login.
Enter your username and password credentials as you normally would, and you'll
be presented with a second prompt for an authentication code. Enter the pin from
your phone's application or a recovery code to log in.
![Two-factor authentication on sign in](2fa_auth.png)
## Disabling 2FA
1. Log in to your GitLab account.
1. Go to your **Profile Settings**.
1. Go to **Acount**.
1. Click **Disable Two-factor Authentication**.
[Google Authenticator]: https://support.google.com/accounts/answer/1066447?hl=en
...@@ -8,11 +8,6 @@ Feature: Admin Deploy Keys ...@@ -8,11 +8,6 @@ Feature: Admin Deploy Keys
When I visit admin deploy keys page When I visit admin deploy keys page
Then I should see all public deploy keys Then I should see all public deploy keys
Scenario: Deploy Keys show
When I visit admin deploy keys page
And I click on first deploy key
Then I should see deploy key details
Scenario: Deploy Keys new Scenario: Deploy Keys new
When I visit admin deploy keys page When I visit admin deploy keys page
And I click 'New Deploy Key' And I click 'New Deploy Key'
......
...@@ -14,17 +14,6 @@ class Spinach::Features::AdminDeployKeys < Spinach::FeatureSteps ...@@ -14,17 +14,6 @@ class Spinach::Features::AdminDeployKeys < Spinach::FeatureSteps
end end
end end
step 'I click on first deploy key' do
click_link DeployKey.are_public.first.title
end
step 'I should see deploy key details' do
deploy_key = DeployKey.are_public.first
current_path.should == admin_deploy_key_path(deploy_key)
page.should have_content(deploy_key.title)
page.should have_content(deploy_key.key)
end
step 'I visit admin deploy key page' do step 'I visit admin deploy key page' do
visit admin_deploy_key_path(deploy_key) visit admin_deploy_key_path(deploy_key)
end end
......
...@@ -172,7 +172,7 @@ end ...@@ -172,7 +172,7 @@ end
# DELETE /:project_id/deploy_keys/:id(.:format) deploy_keys#destroy # DELETE /:project_id/deploy_keys/:id(.:format) deploy_keys#destroy
describe Projects::DeployKeysController, 'routing' do describe Projects::DeployKeysController, 'routing' do
it_behaves_like 'RESTful project resources' do it_behaves_like 'RESTful project resources' do
let(:actions) { [:index, :show, :new, :create] } let(:actions) { [:index, :new, :create] }
let(:controller) { 'deploy_keys' } let(:controller) { 'deploy_keys' }
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment