Fix: self-heal del profile en middleware + backfill de users existentes
El trigger prestamos_on_auth_user_created coexiste con otro trigger del proyecto vecino en auth.users y no siempre dispara. Consecuencia: usuarios que hacían login vía OAuth entraban con user pero sin profile, y la app los trataba como "no logueado". - Middleware: si hay user y no hay profile (email @uabc.edu.mx), upsert del profile con datos del OAuth (nombre desde user_metadata.full_name). - Migración 0005: policy RLS profiles_insert_self con check (id=auth.uid() and rol='alumno') — impide escalación a admin desde el self-heal. - Backfill manual ejecutado en prod para los 8 users @uabc.edu.mx que ya existían en auth.users pero no tenían profile.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- 0005_profiles_insert_self.sql
|
||||
-- Permite al usuario autenticado insertar su propio profile.
|
||||
-- Necesario para el self-heal del middleware cuando el trigger
|
||||
-- prestamos_on_auth_user_created no dispara (coexiste con otro trigger
|
||||
-- del proyecto vecino en auth.users que a veces impide la ejecucion).
|
||||
-- rol='alumno' obligatorio en el CHECK -> el user no puede promoverse
|
||||
-- a admin insertando; solo el admin puede modificar rol via
|
||||
-- profiles_admin_all (definida en 0001).
|
||||
|
||||
begin;
|
||||
|
||||
drop policy if exists profiles_insert_self on prestamos.profiles;
|
||||
|
||||
create policy profiles_insert_self on prestamos.profiles
|
||||
for insert to authenticated
|
||||
with check (id = auth.uid() and rol = 'alumno');
|
||||
|
||||
commit;
|
||||
Reference in New Issue
Block a user