Sha256: b859c4a94f767d4df4fa2e6799c9e14a735e6b78b05db8923aa7ec69301fb06c
Contents?: true
Size: 1.93 KB
Versions: 1
Compression:
Stored size: 1.93 KB
Contents
class Kiqr::Users::Settings::TwoFactorController < Kiqr::Users::Settings::BaseController before_action :setup_user before_action :ensure_not_enabled, only: %i[new create] before_action do add_breadcrumb I18n.t("kiqr.breadcrumbs.settings.users.two_factor.root"), user_settings_two_factor_path end def new # Reset the OTP secret to make sure that the user has a fresh secret key. # This will also reset the otp_required_for_login flag to make sure the user # doesn't get locked out of their account. @user.reset_otp_secret! end def show; end def create if @user.validate_and_consume_otp!(params[:user][:otp_attempt]) @user.update(otp_required_for_login: true) kiqr_flash_message :success, :two_factor_enabled redirect_to user_settings_two_factor_path else @user.errors.add(:otp_attempt, I18n.t("kiqr.users.settings.two_factor.form.invalid_otp")) render turbo_stream: turbo_stream.replace("two_factor_form", partial: "kiqr/users/settings/two_factor/form", locals: { user: @user }), status: :unprocessable_content end end def destroy return redirect_to user_settings_two_factor_path unless two_factor_enabled? if @user.validate_and_consume_otp!(params.dig(:user, :otp_attempt)) @user.update(otp_required_for_login: false, otp_backup_codes: []) kiqr_flash_message :success, :two_factor_disabled redirect_to user_settings_two_factor_path else @user.errors.add(:otp_attempt, I18n.t("kiqr.users.settings.two_factor.form.invalid_otp")) render :show, status: :unprocessable_content end end private def two_factor_enabled? current_user.otp_required_for_login? end helper_method :two_factor_enabled? # Don't refresh the OTP secret if it's already enabled. This may lock the user # out of their account if they've already setup 2FA. def ensure_not_enabled redirect_to user_settings_two_factor_path if two_factor_enabled? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kiqr-0.1.0.alpha1 | app/controllers/kiqr/users/settings/two_factor_controller.rb |