diff options
author | Matt Jankowski <matt@jankowski.online> | 2024-03-19 11:39:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-19 15:39:14 +0000 |
commit | 62e266fbd6231bd8083df774a93e88155d3f0bd9 (patch) | |
tree | 08f83b03a86ad7c46d541fc0a02d4e3b84cd7a38 | |
parent | d7ab5655efde24fd73f9ad4cd6c763852a7004f8 (diff) |
Add `BrowserDetection` model concern (#29513)
-rw-r--r-- | app/models/concerns/browser_detection.rb | 27 | ||||
-rw-r--r-- | app/models/login_activity.rb | 14 | ||||
-rw-r--r-- | app/models/session_activation.rb | 19 |
3 files changed, 31 insertions, 29 deletions
diff --git a/app/models/concerns/browser_detection.rb b/app/models/concerns/browser_detection.rb new file mode 100644 index 00000000000..d42d0a5c998 --- /dev/null +++ b/app/models/concerns/browser_detection.rb @@ -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 diff --git a/app/models/login_activity.rb b/app/models/login_activity.rb index 654dd623ad1..240d571c0ed 100644 --- a/app/models/login_activity.rb +++ b/app/models/login_activity.rb @@ -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 diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index c67180d3baf..d0a77daf0a6 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -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 |