discourse/lib/second_factor/actions/base.rb
David Taylor 1bfccdd4f2
DEV: Allow run_second_factor! to be used before login (#25420)
In a handful of situations, we need to verify a user's 2fa credentials before `current_user` is assigned. For example: login, email_login and change-email confirmation. This commit adds an explicit `target_user:` parameter to the centralized 2fa system so that it can be used for those situations.

For safety and clarity, this new parameter only works for anon. If some user is logged in, and target_user is set to a different user, an exception will be raised.
2024-01-29 12:28:47 +00:00

37 lines
855 B
Ruby

# frozen_string_literal: true
module SecondFactor::Actions
class Base
include Rails.application.routes.url_helpers
attr_reader :current_user, :guardian, :request
def initialize(guardian, request, target_user:, opts: nil)
@guardian = guardian
@current_user = guardian.user
@target_user = target_user
@request = request
@opts = HashWithIndifferentAccess.new(opts)
end
def skip_second_factor_auth?(params)
false
end
def second_factor_auth_skipped!(params)
raise NotImplementedError.new
end
def no_second_factors_enabled!(params)
raise NotImplementedError.new
end
def second_factor_auth_required!(params)
raise NotImplementedError.new
end
def second_factor_auth_completed!(callback_params)
raise NotImplementedError.new
end
end
end