Add BrowserDetection
model concern (#29513)
This commit is contained in:
parent
d7ab5655ef
commit
62e266fbd6
3 changed files with 31 additions and 29 deletions
27
app/models/concerns/browser_detection.rb
Normal file
27
app/models/concerns/browser_detection.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module BrowserDetection
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
before_save :assign_user_agent
|
||||
end
|
||||
|
||||
def detection
|
||||
@detection ||= Browser.new(user_agent)
|
||||
end
|
||||
|
||||
def browser
|
||||
detection.id
|
||||
end
|
||||
|
||||
def platform
|
||||
detection.platform.id
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assign_user_agent
|
||||
self.user_agent ||= ''
|
||||
end
|
||||
end
|
|
@ -16,21 +16,11 @@
|
|||
#
|
||||
|
||||
class LoginActivity < ApplicationRecord
|
||||
include BrowserDetection
|
||||
|
||||
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
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
#
|
||||
|
||||
class SessionActivation < ApplicationRecord
|
||||
include BrowserDetection
|
||||
|
||||
belongs_to :user, inverse_of: :session_activations
|
||||
belongs_to :access_token, class_name: 'Doorkeeper::AccessToken', dependent: :destroy, optional: true
|
||||
belongs_to :web_push_subscription, class_name: 'Web::PushSubscription', dependent: :destroy, optional: true
|
||||
|
@ -24,19 +26,6 @@ class SessionActivation < ApplicationRecord
|
|||
to: :access_token,
|
||||
allow_nil: true
|
||||
|
||||
def detection
|
||||
@detection ||= Browser.new(user_agent)
|
||||
end
|
||||
|
||||
def browser
|
||||
detection.id
|
||||
end
|
||||
|
||||
def platform
|
||||
detection.platform.id
|
||||
end
|
||||
|
||||
before_save :assign_user_agent
|
||||
before_create :assign_access_token
|
||||
|
||||
class << self
|
||||
|
@ -67,10 +56,6 @@ class SessionActivation < ApplicationRecord
|
|||
|
||||
private
|
||||
|
||||
def assign_user_agent
|
||||
self.user_agent = '' if user_agent.nil?
|
||||
end
|
||||
|
||||
def assign_access_token
|
||||
self.access_token = Doorkeeper::AccessToken.create!(access_token_attributes)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue