1
0
Fork 0
This repository has been archived on 2023-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
lpr-partynest/app/interactors/log_user_session.rb

64 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class LogUserSession
include Interactor
def call
create_session
send_email_alerts
send_telegram_alerts
end
private
def contacts
@contacts ||=
context
.user
.account
.contact_list
.contacts
.where(send_security_notifications: true)
end
def email_contacts
@email_contacts ||=
contacts
.includes(:contact_network)
.where(contact_networks: { codename: :email })
end
def telegram_contacts
@telegram_contacts ||=
contacts
.includes(:contact_network)
.where(contact_networks: { codename: :telegram_id })
end
def create_session
@session = Session.create!(
account: context.user.account,
logged_at: context.user.current_sign_in_at,
ip_address: context.user.current_sign_in_ip,
user_agent: context.user_agent,
)
end
def send_email_alerts
email_contacts.each do |contact|
NotificationMailer.signed_in(contact.value, @session).deliver_now
rescue
nil
end
end
def send_telegram_alerts
telegram_contacts.each do |contact|
SendTelegramMessage.call(
chat_id: contact.value,
text: I18n.translate(:new_sign_in),
)
end
end
end