Class: SpreeCmCommissioner::UserIdTokenAuthenticator

Inherits:
BaseInteractor show all
Defined in:
app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb

Instance Method Summary collapse

Instance Method Details

#callObject

:id_token, :tenant_id (optional)



4
5
6
7
8
9
10
11
# File 'app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb', line 4

def call
  context.user = checker.user || register_user
  context.fail!(message: I18n.t('authenticator.incorrect_login')) if context.user.nil?

  update_user_email if context.user.email.blank?

  context.fail!(message: 'account_temporarily_deleted') if context.user.soft_deleted?
end

#checkerObject



30
31
32
33
# File 'app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb', line 30

def checker
  @checker ||= SpreeCmCommissioner::UserIdTokenChecker.call(id_token: context.id_token, tenant_id: context.tenant_id)
  @checker
end

#register_userObject



13
14
15
16
17
18
19
20
# File 'app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb', line 13

def register_user
  register_context = SpreeCmCommissioner::UserRegistrationWithIdToken.call(
    id_token: context.id_token,
    tenant_id: context.tenant_id
  )

  register_context.user
end

#update_user_emailObject



22
23
24
25
26
27
28
# File 'app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb', line 22

def update_user_email
  firebase_context = FirebaseIdTokenProvider.call(id_token: context.id_token)
  return unless firebase_context.success?

  email = firebase_context.provider[:email]
  context.user.update(email: email) if email.present?
end