class Admin::TwoFactorController
def create
def create if @user.validate_and_consume_otp!(params[:otp_attempt]) session.delete(:pre_2fa_user_id) session.delete(:pre_2fa_started_at) sign_in(:user, @user) redirect_to after_sign_in_path_for(@user) else reset_session redirect_to new_user_session_path, alert: t('two_factor_controller.invalid_code') end end
def load_pre_2fa_user
def load_pre_2fa_user if current_user redirect_to after_sign_in_path_for(current_user) and return end @user = User.find_by(id: session[:pre_2fa_user_id]) if !@user&.otp_required_for_login || session_expired? reset_session redirect_to new_user_session_path, alert: t('two_factor_controller.session_expired') end end
def session_expired?
def session_expired? started_at = session[:pre_2fa_started_at] return true unless started_at Time.current.to_i - started_at > MAX_2FA_SESSION_DURATION end
def show; end
def show; end