24 lines
518 B
Ruby
24 lines
518 B
Ruby
class Mfa::AuthenticationService
|
|
pattr_initialize [:user!, :otp_code, :backup_code]
|
|
|
|
def authenticate
|
|
return false unless user
|
|
|
|
return authenticate_with_otp if otp_code.present?
|
|
return authenticate_with_backup_code if backup_code.present?
|
|
|
|
false
|
|
end
|
|
|
|
private
|
|
|
|
def authenticate_with_otp
|
|
user.validate_and_consume_otp!(otp_code)
|
|
end
|
|
|
|
def authenticate_with_backup_code
|
|
mfa_service = Mfa::ManagementService.new(user: user)
|
|
mfa_service.validate_backup_code!(backup_code)
|
|
end
|
|
end
|