Commit 379d6018 by Denys Tito

feat(usuarios): script para usar el correo del apoderado como login

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
parent c9698bbc
BEGIN;
CREATE TABLE IF NOT EXISTS intranet.users_login_backup_20261007 AS
SELECT user_id, user_login, now() AS backed_up_at
FROM intranet.users;
CREATE TEMP TABLE login_candidates ON COMMIT DROP AS
SELECT u.user_id,
lower(btrim(p.persona_correo)) AS email
FROM intranet.users u
JOIN persona.pe_persona p ON p.persona_id = u.parent_id
WHERE lower(btrim(p.persona_correo)) ~ '^[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}$';
CREATE TEMP TABLE login_updates ON COMMIT DROP AS
SELECT c.user_id, c.email
FROM login_candidates c
WHERE c.email IN (SELECT email FROM login_candidates GROUP BY email HAVING count(*) = 1)
AND NOT EXISTS (SELECT 1
FROM intranet.users o
WHERE lower(o.user_login) = c.email
AND o.user_id <> c.user_id)
AND NOT EXISTS (SELECT 1
FROM intranet.users s
WHERE s.user_id = c.user_id
AND s.user_login = c.email);
SELECT count(*) AS usuarios_a_actualizar FROM login_updates;
UPDATE intranet.users u
SET user_login = l.email
FROM login_updates l
WHERE u.user_id = l.user_id;
SELECT count(*) AS logins_duplicados_tras_update
FROM (SELECT lower(user_login) FROM intranet.users GROUP BY lower(user_login) HAVING count(*) > 1) d;
COMMIT;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment