diff --git a/db/migrations/0011_case_insensitive_emails.sql b/db/migrations/0011_case_insensitive_emails.sql index b04772d0..63b0fdd2 100644 --- a/db/migrations/0011_case_insensitive_emails.sql +++ b/db/migrations/0011_case_insensitive_emails.sql @@ -1,5 +1,9 @@ -- +migrate Up +-- This migration is a fix for a bug that allowed duplicate emails if they used different cases (see #338). +-- When migrating, dex will not take the liberty of deleting rows for duplicate cases. Instead it will +-- raise an exception and call for an admin to remove duplicates manually. + CREATE OR REPLACE FUNCTION raise_exp() RETURNS VOID AS $$ BEGIN RAISE EXCEPTION 'Found duplicate emails when using case insensitive comparision, cannot perform migration.'; diff --git a/db/user.go b/db/user.go index 7a93c480..8ac04c83 100644 --- a/db/user.go +++ b/db/user.go @@ -425,7 +425,7 @@ func (r *userRepo) insertRemoteIdentity(tx repo.Transaction, userID string, ri u type userModel struct { ID string `db:"id"` - Email string `db:"email"` // NOTE(ericchiang): When making comparisions emails are case insensitive. + Email string `db:"email"` EmailVerified bool `db:"email_verified"` DisplayName string `db:"display_name"` Disabled bool `db:"disabled"`