about summary refs log tree commit diff
path: root/app/models/identity.rb
diff options
context:
space:
mode:
authorDavid Yip <yipdw@member.fsf.org>2018-02-04 16:36:19 -0600
committerDavid Yip <yipdw@member.fsf.org>2018-02-04 16:36:19 -0600
commita6fb1c58eead1357a307813c69f798f32bcf7cae (patch)
treed56d2721705d86a925279a737943cbaa28a60979 /app/models/identity.rb
parent530fcc1c14d2b7a38c1b734c0b18955f109f0f20 (diff)
parent38e0133e1b01c21a710111097102a6eb205b9b9b (diff)
Merge remote-tracking branch 'origin/master' into merge-upstream
 Conflicts:
	.env.production.sample
	app/controllers/auth/confirmations_controller.rb
	db/schema.rb
Diffstat (limited to 'app/models/identity.rb')
-rw-r--r--app/models/identity.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb
new file mode 100644
index 000000000..a5e0c09ec
--- /dev/null
+++ b/app/models/identity.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: identities
+#
+#  id         :integer          not null, primary key
+#  user_id    :integer
+#  provider   :string           default(""), not null
+#  uid        :string           default(""), not null
+#  created_at :datetime         not null
+#  updated_at :datetime         not null
+#
+
+class Identity < ApplicationRecord
+  belongs_to :user, dependent: :destroy
+  validates :uid, presence: true, uniqueness: { scope: :provider }
+  validates :provider, presence: true
+
+  def self.find_for_oauth(auth)
+    find_or_create_by(uid: auth.uid, provider: auth.provider)
+  end
+end