Skip to content

Commit 47a53ce

Browse files
authored
coderd: treat email case insensitively (coder#4215)
1 parent 20bcb04 commit 47a53ce

File tree

8 files changed

+15
-3
lines changed

8 files changed

+15
-3
lines changed

coderd/database/databasefake/databasefake.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ func (q *fakeQuerier) GetUserByEmailOrUsername(_ context.Context, arg database.G
311311
defer q.mutex.RUnlock()
312312

313313
for _, user := range q.users {
314-
if (user.Email == arg.Email || user.Username == arg.Username) && user.Deleted == arg.Deleted {
314+
if (strings.EqualFold(user.Email, arg.Email) || strings.EqualFold(user.Username, arg.Username)) && user.Deleted == arg.Deleted {
315315
return user, nil
316316
}
317317
}

coderd/database/dump.sql

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000054_email_case.down.sql

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE UNIQUE INDEX IF NOT EXISTS users_email_lower_idx ON users USING btree (lower(email)) WHERE (deleted = false);

coderd/database/queries.sql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/users.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ SELECT
1717
FROM
1818
users
1919
WHERE
20-
(LOWER(username) = LOWER(@username) OR email = @email)
20+
(LOWER(username) = LOWER(@username) OR LOWER(email) = LOWER(@email))
2121
AND deleted = @deleted
2222
LIMIT
2323
1;

coderd/database/unique_constraint.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/users_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,19 @@ func TestPostLogin(t *testing.T) {
256256
}
257257
_, err := client.CreateFirstUser(ctx, req)
258258
require.NoError(t, err)
259+
259260
_, err = client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
260261
Email: req.Email,
261262
Password: req.Password,
262263
})
263264
require.NoError(t, err)
265+
266+
// Login should be case insensitive
267+
_, err = client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
268+
Email: strings.ToUpper(req.Email),
269+
Password: req.Password,
270+
})
271+
require.NoError(t, err)
264272
})
265273

266274
t.Run("Lifetime&Expire", func(t *testing.T) {

0 commit comments

Comments
 (0)