forked from treehouse/mastodon
36 lines
884 B
Ruby
36 lines
884 B
Ruby
|
# frozen_string_literal: true
|
||
|
# == 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
|