Make 2 factor authentication work

This commit is contained in:
Dmitriy Zaporozhets
2015-05-09 17:31:10 -04:00
committed by Robert Speicher
parent ba7e2fd946
commit cde474a49f
3 changed files with 37 additions and 9 deletions
@@ -1,16 +1,25 @@
class Profiles::TwoFactorAuthsController < ApplicationController
def new
issuer = "GitLab | #{current_user.email}"
uri = current_user.otp_provisioning_uri(current_user.email, issuer: issuer)
@qr_code = RQRCode::render_qrcode(uri, :svg, level: :l, unit: 2)
unless current_user.otp_secret
current_user.otp_secret = User.generate_otp_secret
current_user.save!
end
@qr_code = build_qr_code
end
def create
current_user.otp_required_for_login = true
current_user.otp_secret = User.generate_otp_secret
current_user.save!
if current_user.valid_otp?(params[:pin_code])
current_user.otp_required_for_login = true
#current_user.otp_secret = User.generate_otp_secret
current_user.save!
redirect_to profile_account_path
redirect_to profile_account_path
else
@error = 'Invalid pin code'
@qr_code = build_qr_code
render 'new'
end
end
def destroy
@@ -19,4 +28,12 @@ class Profiles::TwoFactorAuthsController < ApplicationController
redirect_to profile_account_path
end
private
def build_qr_code
issuer = "GitLab | #{current_user.email}"
uri = current_user.otp_provisioning_uri(current_user.email, issuer: issuer)
RQRCode::render_qrcode(uri, :svg, level: :m, unit: 3)
end
end
+9 -1
View File
@@ -30,9 +30,17 @@
%legend Two-Factor Authentication
%p
Keep your account secure by enabling two-factor authentication.
%br
Each time you log in, youll be required to provide your password plus a randomly generated access code.
%div
= link_to "Enable 2-Factor Authentication", new_profile_two_factor_auth_path, class: 'btn btn-success'
- if current_user.otp_required_for_login
%strong.text-success
%i.fa.fa-check
2-Factor Authentication enabled
.pull-right
= link_to "Disable 2-Factor Authentication", profile_two_factor_auth_path, method: :delete, class: 'btn btn-close btn-sm'
- else
= link_to "Enable 2-Factor Authentication", new_profile_two_factor_auth_path, class: 'btn btn-success'
- if show_profile_social_tab?
%fieldset
@@ -5,7 +5,10 @@
%hr
= form_tag new_profile_two_factor_auth_path, method: :post, class: 'form-horizontal' do |f|
= form_tag profile_two_factor_auth_path, method: :post, class: 'form-horizontal' do |f|
- if @error
.alert.alert-danger
= @error
.form-group
.col-sm-2
.col-sm-10