Class: RailsBase::MfaAuthController

Inherits:
RailsBaseApplicationController show all
Defined in:
app/controllers/rails_base/mfa_auth_controller.rb

Constant Summary

Constants included from CaptureReferenceHelper

CaptureReferenceHelper::CAPTURE_ACTION_NAME, CaptureReferenceHelper::CAPTURE_CONTROLLER_PATH, CaptureReferenceHelper::CAPTURE_REFERRED_PATH

Constants included from AppearanceHelper

AppearanceHelper::APPEARANCE_MODE_ACTUAL_COOKIE, AppearanceHelper::APPEARANCE_MODE_COOKIE, AppearanceHelper::APPEARANCE_TEXT_CLASS, AppearanceHelper::VIEWPORT_EXTRA_LARGE, AppearanceHelper::VIEWPORT_EXTRA_SMALL, AppearanceHelper::VIEWPORT_LARGE, AppearanceHelper::VIEWPORT_MEDIUM, AppearanceHelper::VIEWPORT_MOBILE_MAX, AppearanceHelper::VIEWPORT_SIZES, AppearanceHelper::VIEWPORT_SMALL

Constants included from ApplicationHelper

ApplicationHelper::TIMEZONE_OFFSET_COOKIE, ApplicationHelper::TIMEZONE_SESSION_NAME

Instance Method Summary collapse

Methods inherited from RailsBaseApplicationController

#admin_impersonation_session?, #admin_reset_impersonation_session!, #admin_user?, #capture_admin_action, #is_timeout_error?, #populate_admin_actions, #set_time_zone

Methods included from CaptureReferenceHelper

#authenticate_user!, #capture_and_clear_reference_redirect!, #capture_clear_reference_from_sesssion!, #capture_reference, #redirect_from_reference, #reference_redirect, #skip_capture_reference!, #skip_capture_reference?, #use_capture_reference?

Methods included from AppearanceHelper

#appearance_mode_drop_down, #appearance_text_class, #footer_mode_case, #force_sticky_mode!

Methods included from ApplicationHelper

#admin_reset_session!, #browser, #is_mobile?, #is_safari?, #mfa_fallback?

Instance Method Details

#mfa_codeObject

GET /mfa_verify



6
7
8
# File 'app/controllers/rails_base/mfa_auth_controller.rb', line 6

def mfa_code
  @masked_phone = User.find(@token_verifier.user_id).masked_phone
end

#mfa_code_verifyObject

POST /mfa_verify



11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/controllers/rails_base/mfa_auth_controller.rb', line 11

def mfa_code_verify
  mfa_validity = RailsBase::Authentication::MfaValidator.call(params: params, session_mfa_user_id: @token_verifier.user_id)
  if mfa_validity.failure?
    redirect_to(mfa_validity.redirect_url, alert: mfa_validity.message)
    return
  end

  mfa_validity.user.set_last_mfa_login!

  (mfa_validity.user)
  redirect_to RailsBase.url_routes.authenticated_root_path, notice: "Welcome #{mfa_validity.user.full_name}"
end

#resend_mfaObject

POST /mfa_verify



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/rails_base/mfa_auth_controller.rb', line 25

def resend_mfa
  user = User.find(@token_verifier.user_id)
  mfa_token = RailsBase::Authentication::SendLoginMfaToUser.call(user: user)
  if mfa_token.failure?
    flash[:error] = mfa_token.message
    session[:mfa_randomized_token] = nil
    redirect_to RailsBase.url_routes.new_user_session_path, email: params.dig(:user,:email), alert: mfa_token.message
    return
  end
  expired_at = Time.zone.parse(@token_verifier.expires_at)
  session[:mfa_randomized_token] =
    RailsBase::Authentication::MfaSetEncryptToken.call(user: user, expires_at: expired_at).encrypted_val

  redirect_to RailsBase.url_routes.mfa_code_path, notice: "MFA has been sent via SMS to number on file"
end

#validate_tokenObject



41
42
43
44
45
46
47
48
# File 'app/controllers/rails_base/mfa_auth_controller.rb', line 41

def validate_token
  @token_verifier =
    RailsBase::Authentication::SessionTokenVerifier.call(mfa_randomized_token: session[:mfa_randomized_token])
  return if @token_verifier.success?

  redirect_to RailsBase.url_routes.new_user_session_path, alert: @token_verifier.message
  return false
end