Class: SpreeCmCommissioner::TelegramWebAppVendorUserChecker

Inherits:
BaseInteractor
  • Object
show all
Defined in:
app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_checker.rb

Instance Method Summary collapse

Instance Method Details

#callObject



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

def call
  context.decoded_telegram_user_id = decode_telegram_user_id
  context.user = find_spree_user(context.decoded_telegram_user_id)

  check_vendors
end

#check_vendorsObject



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

def check_vendors
  return unless context.user.vendors.empty?

  context.fail!(message: "You're not a vendor user")
end

#decode_telegram_user_idObject



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

def decode_telegram_user_id
  decode_telegram_user = ActiveSupport::JSON.decode(decoded_telegram_init_data['user'])
  telegram_user_id = decode_telegram_user['id']

  return telegram_user_id if telegram_user_id.present?

  context.fail!(message: 'Telegram user is not provided')
end

#find_spree_user(telegram_user_id) ⇒ Object



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

def find_spree_user(telegram_user_id)
  user_identity_provider = SpreeCmCommissioner::UserIdentityProvider.find_by(identity_type: :telegram, sub: telegram_user_id)

  return user_identity_provider.user if user_identity_provider&.user.present?

  context.fail!(message: 'Could not find connected user')
end