Class: StandardId::Passwordless::BaseStrategy

Inherits:
Object
  • Object
show all
Defined in:
lib/standard_id/passwordless/base_strategy.rb

Direct Known Subclasses

EmailStrategy, SmsStrategy

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ BaseStrategy

Returns a new instance of BaseStrategy.



6
7
8
# File 'lib/standard_id/passwordless/base_strategy.rb', line 6

def initialize(request)
  @request = request
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



4
5
6
# File 'lib/standard_id/passwordless/base_strategy.rb', line 4

def request
  @request
end

Instance Method Details

#connection_typeObject

Raises:

  • (NotImplementedError)


10
11
12
# File 'lib/standard_id/passwordless/base_strategy.rb', line 10

def connection_type
  raise NotImplementedError
end

#find_or_create_account(username) ⇒ Object

Public wrapper to reuse account lookup/creation outside OTP verification



56
57
58
59
# File 'lib/standard_id/passwordless/base_strategy.rb', line 56

def (username)
  validate_username!(username)
  find_or_create_account!(username)
end

#identifier_classObject

Raises:

  • (NotImplementedError)


61
62
63
# File 'lib/standard_id/passwordless/base_strategy.rb', line 61

def identifier_class
  raise NotImplementedError
end

#sender_callbackObject



65
66
67
68
# File 'lib/standard_id/passwordless/base_strategy.rb', line 65

def sender_callback
  # Implement in subclasses
  nil
end

#start!(attrs) ⇒ Object

Start flow: validate recipient, create challenge, and trigger sender attrs: { connection:, username: }



16
17
18
19
20
21
22
# File 'lib/standard_id/passwordless/base_strategy.rb', line 16

def start!(attrs)
  username = attrs[:username]
  validate_username!(username)
  challenge = create_challenge!(username)
  sender_callback&.call(username, challenge.code)
  challenge
end