about summary refs log tree commit diff
path: root/app/models/login_activity.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-06-23 12:49:09 +0200
committerGitHub <noreply@github.com>2021-06-23 12:49:09 +0200
commit776e00f19399875a135a64d8ad486f3578101cf9 (patch)
treeea846e21767b1cb2f9f277d3829fbade1f0e46a0 /app/models/login_activity.rb
parenta434f370f38ac66e05000545e36d7c696f4962d0 (diff)
parent979059fbc93664b38b720b369b31beaa89457879 (diff)
Merge pull request #1551 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/models/login_activity.rb')
-rw-r--r--app/models/login_activity.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/app/models/login_activity.rb b/app/models/login_activity.rb
new file mode 100644
index 000000000..52a0fd01d
--- /dev/null
+++ b/app/models/login_activity.rb
@@ -0,0 +1,35 @@
+# 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