Corrige les comptes invités qui restaient bloqués sans mot de passe
Le pseudo temporaire fixe "Nouveau membre" entrait en collision (contrainte unique) dès qu'une 2e personne était invitée avant que la 1re ait fini son inscription ; il inclut maintenant un suffixe d'uuid. Le token d'invitation pouvait aussi s'établir sur n'importe quelle page (pas seulement /signup), laissant certains comptes connectés sans jamais voir le formulaire de mot de passe — /signup affiche désormais un état de chargement au lieu d'un écran vide, et le proxy renvoie systématiquement vers /signup tant que le compte n'est pas finalisé. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+9
-1
@@ -147,6 +147,11 @@ create trigger profiles_before_update
|
||||
-- Création automatique du profil à l'inscription (auth.users → profiles),
|
||||
-- indépendamment de l'état de la session (fonctionne même si l'email
|
||||
-- n'est pas encore confirmé, contrairement à un insert fait depuis le client).
|
||||
-- Le pseudo temporaire inclut les 8 premiers caractères de l'uuid : un
|
||||
-- littéral fixe "Nouveau membre" pour tout le monde entrait en collision
|
||||
-- avec profiles_pseudo_lower_key (unique) dès qu'une 2e personne était
|
||||
-- invitée avant que la 1re ait fini son inscription — ce qui n'était
|
||||
-- jamais arrivé avant d'inviter plusieurs personnes d'affilée.
|
||||
create or replace function public.handle_new_user()
|
||||
returns trigger
|
||||
language plpgsql
|
||||
@@ -154,7 +159,10 @@ security definer set search_path = public
|
||||
as $$
|
||||
begin
|
||||
insert into public.profiles (id, pseudo)
|
||||
values (new.id, coalesce(new.raw_user_meta_data ->> 'pseudo', 'Nouveau membre'));
|
||||
values (
|
||||
new.id,
|
||||
coalesce(new.raw_user_meta_data ->> 'pseudo', 'Nouveau membre ' || substr(new.id::text, 1, 8))
|
||||
);
|
||||
return new;
|
||||
end;
|
||||
$$;
|
||||
|
||||
Reference in New Issue
Block a user