summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Jankowski <matt@jankowski.online>2024-03-19 11:39:14 -0400
committerGitHub <noreply@github.com>2024-03-19 15:39:14 +0000
commit62e266fbd6231bd8083df774a93e88155d3f0bd9 (patch)
tree08f83b03a86ad7c46d541fc0a02d4e3b84cd7a38
parentd7ab5655efde24fd73f9ad4cd6c763852a7004f8 (diff)
Add `BrowserDetection` model concern (#29513)
-rw-r--r--app/models/concerns/browser_detection.rb27
-rw-r--r--app/models/login_activity.rb14
-rw-r--r--app/models/session_activation.rb19
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