You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Creating a new user using oauth fails in case there is already the same username with different case (ie. existing: peter, newly registering: Peter)
Steps to reproduce
create an account with same username as your github username, but in different case (in my case, HYDRANDT would do)
sign out
attempt to sign in using github
enjoy blue screen "An unknown error occurred"
Expected results
Username sanitization should be case insensitive and username should be sanitized to hydrandt1
Actual results
HYDRANDT and hydrandt are deemed non identical, number is not appended, and inserting a new user fails, as username column on app_public.users is type citext.
-- Sanitise the username, and make it unique if necessary.
...
select (
case
when i = 0 then v_username
else v_username || i::text
end
) into v_username from generate_series(0, 1000) i
where not exists(
select 1
from app_public.users
where users.username = (
case
when i = 0 then v_username
else v_username || i::text
end
)
)
limit 1;
Possible Solution
Convert username using lower() while checking for uniqueness:
select (
case
when i = 0 then v_username
else v_username || i::text
end
) into v_username from generate_series(0, 1000) i
where not exists(
select 1
from app_public.users
-- comparing using lowercase to make sure the username is unique (username column is citext -> constraint is not case sensitive)
where lower(users.username) = (
case
when i = 0 then lower(v_username)
else lower(v_username) || i::text
end
)
)
limit 1;
The text was updated successfully, but these errors were encountered:
hydrandt
added a commit
to hydrandt/starter
that referenced
this issue
Dec 10, 2021
Summary
Creating a new user using oauth fails in case there is already the same username with different case (ie. existing: peter, newly registering: Peter)
Steps to reproduce
Expected results
Username sanitization should be case insensitive and username should be sanitized to hydrandt1
Actual results
HYDRANDT and hydrandt are deemed non identical, number is not appended, and inserting a new user fails, as
username
column onapp_public.users
is typecitext
.Additional context
app_private.register_user
:Possible Solution
Convert username using lower() while checking for uniqueness:
The text was updated successfully, but these errors were encountered: