Allow same email address with different SSO providers

This commit is contained in:
Christoph Haas 2017-04-06 18:31:58 +02:00
parent 381ee35204
commit 63634f00df
3 changed files with 14 additions and 3 deletions

View file

@ -12,7 +12,7 @@ Devise.setup do |config|
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class
# with default "from" parameter.
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
config.mailer_sender = 'webmaster@screenshots.debian.net'
# Configure the class responsible to send e-mails.
# config.mailer = 'Devise::Mailer'
@ -35,6 +35,7 @@ Devise.setup do |config|
# You can also supply a hash where the value is a boolean determining whether
# or not authentication should be aborted when the value is not present.
# config.authentication_keys = [:email]
config.authentication_keys = [:email, :provider]
# Configure parameters from the request object used for authentication. Each entry
# given should be a request method and it will automatically be passed to the

View file

@ -0,0 +1,10 @@
# A user's email address may not be unique if they use different
# single-sign-on providers with the same email address.
# But the combination of the email address and the (SSO)
# provider should be unique.
class ChangeUsersUniqueIndexToUidProvider < ActiveRecord::Migration[5.0]
def change
remove_index 'users', 'email'
add_index 'users', ["email", "provider"], :unique => true
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170405204143) do
ActiveRecord::Schema.define(version: 20170406155141) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -78,7 +78,7 @@ ActiveRecord::Schema.define(version: 20170405204143) do
t.datetime "locked_at"
t.string "provider"
t.string "uid"
t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
t.index ["email", "provider"], name: "index_users_on_email_and_provider", unique: true, using: :btree
end
add_foreign_key "screenshots", "packages", name: "screenshots_package_id_fkey"