2021-06-22 01:07:30 +10:00
|
|
|
# frozen_string_literal: true
|
2023-02-20 16:58:28 +11:00
|
|
|
|
2021-06-22 01:07:30 +10:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: login_activities
|
|
|
|
#
|
|
|
|
# id :bigint(8) not null, primary key
|
|
|
|
# user_id :bigint(8) not null
|
|
|
|
# authentication_method :string
|
|
|
|
# provider :string
|
|
|
|
# success :boolean
|
|
|
|
# failure_reason :string
|
|
|
|
# ip :inet
|
|
|
|
# user_agent :string
|
|
|
|
# created_at :datetime
|
|
|
|
#
|
|
|
|
|
|
|
|
class LoginActivity < ApplicationRecord
|
|
|
|
enum authentication_method: { password: 'password', otp: 'otp', webauthn: 'webauthn', sign_in_token: 'sign_in_token', omniauth: 'omniauth' }
|
|
|
|
|
|
|
|
belongs_to :user
|
|
|
|
|
|
|
|
validates :authentication_method, inclusion: { in: authentication_methods.keys }
|
|
|
|
|
|
|
|
def detection
|
|
|
|
@detection ||= Browser.new(user_agent)
|
|
|
|
end
|
|
|
|
|
|
|
|
def browser
|
|
|
|
detection.id
|
|
|
|
end
|
|
|
|
|
|
|
|
def platform
|
|
|
|
detection.platform.id
|
|
|
|
end
|
|
|
|
end
|