Class: RailsBase::Mfa::Validate::SmsController

Inherits:
RailsBaseApplicationController show all
Defined in:
app/controllers/rails_base/mfa/validate/sms_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

#sms_eventObject

POST mfa/validate/sms/:mfa_event



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'app/controllers/rails_base/mfa/validate/sms_controller.rb', line 61

def sms_event
  mfa_validity = RailsBase::Mfa::Sms::Validate.call(mfa_event: @__rails_base_mfa_event, params: params, session_mfa_user_id: @__rails_base_mfa_event.user_id)
  if mfa_validity.failure?
    redirect_to(mfa_validity.redirect_url, alert: mfa_validity.message)
    return
  end

  mfa_validity.user.set_last_mfa_sms_login!
  if @__rails_base_mfa_event.
    logger.info("Logging User in")
    (mfa_validity.user)
  end

  if @__rails_base_mfa_event.set_satiated_on_success
    logger.info("Satiating MFA Event")
    @__rails_base_mfa_event.satiated!
  end

  add_mfa_event_to_session(event: @__rails_base_mfa_event)
  redirect_to @__rails_base_mfa_event.redirect, notice: @__rails_base_mfa_event.flash_notice
end

#sms_event_inputObject

GET mfa/validate/sms/:mfa_event



50
51
52
53
54
55
56
57
58
# File 'app/controllers/rails_base/mfa/validate/sms_controller.rb', line 50

def sms_event_input
  if @__rails_base_mfa_event.phone_number
    phone_number = @__rails_base_mfa_event.phone_number
  else
    phone_number = User.find(@__rails_base_mfa_event.user_id).phone_number
  end

  @masked_phone = User.masked_number(phone_number)
end

#sms_event_sendObject

POST mfa/validate/sms/:mfa_event/send



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'app/controllers/rails_base/mfa/validate/sms_controller.rb', line 8

def sms_event_send
  if soft_mfa_with_event
    user = User.find(@__rails_base_mfa_event.user_id)
  else
    if request.format.json?
      render json: { message: @__rails_base_mfa_event_invalid_reason }, status: 400
    else
      flash[:alert] = @__rails_base_mfa_event_invalid_reason
      redirect = @__rails_base_mfa_event&.invalid_redirect || RailsBase.url_routes.new_user_session_path

      redirect_to redirect, email: params.dig(:user,:email)
    end
    return
  end

  if request.format.json?
    # When json, this will always come from an authenticated user
    # otherwise kick them out now!
    return unless authenticate_user!

    user = current_user
  end

  result = RailsBase::Mfa::Sms::Send.call(expires_at: 5.minutes.from_now, phone_number: @__rails_base_mfa_event.phone_number, user: user)

  if result.success?
    flash[:notice] = msg = "SMS Code succesfully sent. Please check messages"
    status = 200
  else
    flash[:alert] = msg = "Unable to complete Request. #{result.message}"
    status = 400
  end

  if request.format.json?
    render json: { message: msg }, status: status
    flash.clear
  else
    redirect_to RailsBase.url_routes.mfa_with_event_path(mfa_event: @__rails_base_mfa_event.event, type: RailsBase::Mfa::SMS)
  end
end