fix(ops): setup_first_admin.sql usa email_confirmed_at (GoTrue v2.189.0)
Esquema real verificado en producción (information_schema.columns): auth.users tiene tanto confirmed_at como email_confirmed_at — ambas son columnas reales, así que el INSERT con confirmed_at nunca falló por columna inexistente (por eso el usuario test-e2e se creó sin error). Pero el login seguía rechazando con "Email o contraseña incorrectos" incluso después de confirmar que el usuario existía — GoTrue valida email_confirmed_at para permitir login por password, no confirmed_at. Dejar confirmed_at solo creaba un usuario que nunca queda "confirmado" para efectos de auth. Agregado comentario documentando la versión de GoTrue verificada y cómo re-verificar el schema si esto vuelve a cambiar.
This commit is contained in:
@@ -1,6 +1,13 @@
|
|||||||
-- ============================================================
|
-- ============================================================
|
||||||
-- Script: crear primer usuario platform_admin
|
-- Script: crear primer usuario platform_admin
|
||||||
--
|
--
|
||||||
|
-- Verificado contra GoTrue v2.189.0 (supabase/gotrue:v2.189.0)
|
||||||
|
-- Schema de auth.users puede variar entre versiones de GoTrue.
|
||||||
|
-- Si falla con "column does not exist", verificar el schema real:
|
||||||
|
-- SELECT column_name FROM information_schema.columns
|
||||||
|
-- WHERE table_schema='auth' AND table_name='users'
|
||||||
|
-- ORDER BY ordinal_position;
|
||||||
|
--
|
||||||
-- USO:
|
-- USO:
|
||||||
-- docker exec -i supabase-db psql -U postgres -d postgres \
|
-- docker exec -i supabase-db psql -U postgres -d postgres \
|
||||||
-- -v email='admin@ejemplo.com' -v password='CAMBIAR' \
|
-- -v email='admin@ejemplo.com' -v password='CAMBIAR' \
|
||||||
@@ -16,43 +23,23 @@
|
|||||||
|
|
||||||
WITH new_user AS (
|
WITH new_user AS (
|
||||||
INSERT INTO auth.users (
|
INSERT INTO auth.users (
|
||||||
id,
|
id, instance_id, aud, role, email, encrypted_password,
|
||||||
instance_id,
|
email_confirmed_at, created_at, updated_at,
|
||||||
aud,
|
raw_app_meta_data, raw_user_meta_data,
|
||||||
role,
|
confirmation_token, recovery_token,
|
||||||
email,
|
email_change_token_new, email_change,
|
||||||
encrypted_password,
|
|
||||||
confirmed_at,
|
|
||||||
created_at,
|
|
||||||
updated_at,
|
|
||||||
raw_app_meta_data,
|
|
||||||
raw_user_meta_data,
|
|
||||||
confirmation_token,
|
|
||||||
recovery_token,
|
|
||||||
email_change_token_new,
|
|
||||||
email_change,
|
|
||||||
is_super_admin
|
is_super_admin
|
||||||
) VALUES (
|
) VALUES (
|
||||||
gen_random_uuid(),
|
gen_random_uuid(),
|
||||||
'00000000-0000-0000-0000-000000000000',
|
'00000000-0000-0000-0000-000000000000',
|
||||||
'authenticated',
|
'authenticated', 'authenticated',
|
||||||
'authenticated',
|
|
||||||
:'email',
|
:'email',
|
||||||
extensions.crypt(:'password', extensions.gen_salt('bf')),
|
extensions.crypt(:'password', extensions.gen_salt('bf')),
|
||||||
now(),
|
now(), now(), now(),
|
||||||
now(),
|
|
||||||
now(),
|
|
||||||
'{"provider":"email","providers":["email"]}',
|
'{"provider":"email","providers":["email"]}',
|
||||||
'{}',
|
'{}', '', '', '', '', false
|
||||||
'',
|
) RETURNING id
|
||||||
'',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
false
|
|
||||||
)
|
|
||||||
RETURNING id, email
|
|
||||||
)
|
)
|
||||||
INSERT INTO public.user_roles (user_id, app_role, org_id)
|
INSERT INTO public.user_roles (user_id, app_role, org_id)
|
||||||
SELECT id, 'platform_admin', '10000000-0000-0000-0000-000000000002'
|
SELECT id, 'platform_admin', '10000000-0000-0000-0000-000000000002'
|
||||||
FROM new_user
|
FROM new_user;
|
||||||
RETURNING (SELECT email FROM new_user), user_id;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user