mirror of https://github.com/coder/coder.git
coderd: treat email case insensitively (#4215)
This commit is contained in:
parent
20bcb04e8a
commit
47a53ce6c5
|
@ -311,7 +311,7 @@ func (q *fakeQuerier) GetUserByEmailOrUsername(_ context.Context, arg database.G
|
|||
defer q.mutex.RUnlock()
|
||||
|
||||
for _, user := range q.users {
|
||||
if (user.Email == arg.Email || user.Username == arg.Username) && user.Deleted == arg.Deleted {
|
||||
if (strings.EqualFold(user.Email, arg.Email) || strings.EqualFold(user.Username, arg.Username)) && user.Deleted == arg.Deleted {
|
||||
return user, nil
|
||||
}
|
||||
}
|
||||
|
|
|
@ -532,6 +532,8 @@ CREATE UNIQUE INDEX idx_users_username ON users USING btree (username) WHERE (de
|
|||
|
||||
CREATE UNIQUE INDEX templates_organization_id_name_idx ON templates USING btree (organization_id, lower((name)::text)) WHERE (deleted = false);
|
||||
|
||||
CREATE UNIQUE INDEX users_email_lower_idx ON users USING btree (lower(email)) WHERE (deleted = false);
|
||||
|
||||
CREATE UNIQUE INDEX users_username_lower_idx ON users USING btree (lower(username)) WHERE (deleted = false);
|
||||
|
||||
CREATE UNIQUE INDEX workspaces_owner_id_lower_idx ON workspaces USING btree (owner_id, lower((name)::text)) WHERE (deleted = false);
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
CREATE UNIQUE INDEX IF NOT EXISTS users_email_lower_idx ON users USING btree (lower(email)) WHERE (deleted = false);
|
|
@ -3071,7 +3071,7 @@ SELECT
|
|||
FROM
|
||||
users
|
||||
WHERE
|
||||
(LOWER(username) = LOWER($1) OR email = $2)
|
||||
(LOWER(username) = LOWER($1) OR LOWER(email) = LOWER($2))
|
||||
AND deleted = $3
|
||||
LIMIT
|
||||
1
|
||||
|
|
|
@ -17,7 +17,7 @@ SELECT
|
|||
FROM
|
||||
users
|
||||
WHERE
|
||||
(LOWER(username) = LOWER(@username) OR email = @email)
|
||||
(LOWER(username) = LOWER(@username) OR LOWER(email) = LOWER(@email))
|
||||
AND deleted = @deleted
|
||||
LIMIT
|
||||
1;
|
||||
|
|
|
@ -20,6 +20,7 @@ const (
|
|||
UniqueIndexUsersEmail UniqueConstraint = "idx_users_email" // CREATE UNIQUE INDEX idx_users_email ON users USING btree (email) WHERE (deleted = false);
|
||||
UniqueIndexUsersUsername UniqueConstraint = "idx_users_username" // CREATE UNIQUE INDEX idx_users_username ON users USING btree (username) WHERE (deleted = false);
|
||||
UniqueTemplatesOrganizationIDNameIndex UniqueConstraint = "templates_organization_id_name_idx" // CREATE UNIQUE INDEX templates_organization_id_name_idx ON templates USING btree (organization_id, lower((name)::text)) WHERE (deleted = false);
|
||||
UniqueUsersEmailLowerIndex UniqueConstraint = "users_email_lower_idx" // CREATE UNIQUE INDEX users_email_lower_idx ON users USING btree (lower(email)) WHERE (deleted = false);
|
||||
UniqueUsersUsernameLowerIndex UniqueConstraint = "users_username_lower_idx" // CREATE UNIQUE INDEX users_username_lower_idx ON users USING btree (lower(username)) WHERE (deleted = false);
|
||||
UniqueWorkspacesOwnerIDLowerIndex UniqueConstraint = "workspaces_owner_id_lower_idx" // CREATE UNIQUE INDEX workspaces_owner_id_lower_idx ON workspaces USING btree (owner_id, lower((name)::text)) WHERE (deleted = false);
|
||||
)
|
||||
|
|
|
@ -256,11 +256,19 @@ func TestPostLogin(t *testing.T) {
|
|||
}
|
||||
_, err := client.CreateFirstUser(ctx, req)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
|
||||
Email: req.Email,
|
||||
Password: req.Password,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Login should be case insensitive
|
||||
_, err = client.LoginWithPassword(ctx, codersdk.LoginWithPasswordRequest{
|
||||
Email: strings.ToUpper(req.Email),
|
||||
Password: req.Password,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Lifetime&Expire", func(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue