bcecdbb184
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.
19 lines
699 B
PL/PgSQL
19 lines
699 B
PL/PgSQL
-- 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;
|