diff options
author | beatrix-bitrot <beatrix.bitrot@gmail.com> | 2017-06-27 20:46:13 +0000 |
---|---|---|
committer | beatrix-bitrot <beatrix.bitrot@gmail.com> | 2017-06-27 20:46:13 +0000 |
commit | ddafde942ca53816c19b0ea0cb40bb1b46cf5668 (patch) | |
tree | c0ac2138fe994c4c2a15c23b47d4155f75148945 /app/controllers/settings | |
parent | e6300de1421d28d173658e61601b9e016c3d0a6d (diff) | |
parent | da42bfadb58888e3a18afd66395f0f3edc2fa622 (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'app/controllers/settings')
-rw-r--r-- | app/controllers/settings/two_factor_authentications_controller.rb | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/app/controllers/settings/two_factor_authentications_controller.rb b/app/controllers/settings/two_factor_authentications_controller.rb index f66c3a908..983483881 100644 --- a/app/controllers/settings/two_factor_authentications_controller.rb +++ b/app/controllers/settings/two_factor_authentications_controller.rb @@ -7,7 +7,9 @@ module Settings before_action :authenticate_user! before_action :verify_otp_required, only: [:create] - def show; end + def show + @confirmation = Form::TwoFactorConfirmation.new + end def create current_user.otp_secret = User.generate_otp_secret(32) @@ -16,13 +18,23 @@ module Settings end def destroy - current_user.otp_required_for_login = false - current_user.save! - redirect_to settings_two_factor_authentication_path + if current_user.validate_and_consume_otp!(confirmation_params[:code]) + current_user.otp_required_for_login = false + current_user.save! + redirect_to settings_two_factor_authentication_path + else + flash.now[:alert] = I18n.t('two_factor_authentication.wrong_code') + @confirmation = Form::TwoFactorConfirmation.new + render :show + end end private + def confirmation_params + params.require(:form_two_factor_confirmation).permit(:code) + end + def verify_otp_required redirect_to settings_two_factor_authentication_path if current_user.otp_required_for_login? end |