From 6ba2694733acc8af73bf699551b1d82ec10458bf Mon Sep 17 00:00:00 2001 From: Ignacio Martinez Navajas Date: Mon, 12 May 2025 22:36:07 +0200 Subject: [PATCH] Subido script para comprobar identidades --- ci4/app/Config/Routes/ScriptsRoutes.php | 13 ++++ .../Controllers/Scripts/UsersIntegrity.php | 76 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 ci4/app/Config/Routes/ScriptsRoutes.php create mode 100644 ci4/app/Controllers/Scripts/UsersIntegrity.php diff --git a/ci4/app/Config/Routes/ScriptsRoutes.php b/ci4/app/Config/Routes/ScriptsRoutes.php new file mode 100644 index 00000000..f7e994c9 --- /dev/null +++ b/ci4/app/Config/Routes/ScriptsRoutes.php @@ -0,0 +1,13 @@ +group('scripts', ['namespace' => 'App\Controllers\Scripts'], function ($routes) { + + $routes->get('completar-identidades', 'UsersIntegrity::completarIdentidades'); + + +}); \ No newline at end of file diff --git a/ci4/app/Controllers/Scripts/UsersIntegrity.php b/ci4/app/Controllers/Scripts/UsersIntegrity.php new file mode 100644 index 00000000..5b7aa986 --- /dev/null +++ b/ci4/app/Controllers/Scripts/UsersIntegrity.php @@ -0,0 +1,76 @@ +where('deleted_at', null) + //->like('username', '@safekat.com') + ->findAll(); + + $resultados = []; + + foreach ($usuarios as $usuario) { + $email = $usuario->username . "@safekat.com"; + + // 1. Verificar si el usuario ya tiene identidad tipo email_password + $tieneIdentidad = array_filter( + $usuario->getIdentities(), + fn($identity) => $identity->type === 'email_password' + ); + + if (!empty($tieneIdentidad)) { + $resultados[] = "✅ Ya tiene identidad: {$email}"; + continue; + } + + // 2. Verificar si ya existe una identidad globalmente con ese email + $db = db_connect(); + + $builder = $db->table('auth_identities'); + + $existeGlobal = $builder + ->where('type', 'email_password') + ->where('secret', $email) + ->get() + ->getFirstRow(); + + if ($existeGlobal) { + $resultados[] = "⚠️ Email ya registrado en otra identidad: {$email}"; + continue; + } + + // 3. Crear y guardar identidad + try { + $identity = $usuario->createEmailIdentity([ + 'email' => $email, + 'password' => 'Temporal123!', // reemplazar por valor real si lo tenés + ]); + + //$userModel->saveEmailIdentity($identity); + + $resultados[] = "➕ Identidad creada: {$email}"; + } catch (\Throwable $e) { + $resultados[] = "❌ Error con {$email}: " . $e->getMessage(); + } + } + + return $this->response->setJSON([ + 'status' => 'completado', + 'procesados' => count($usuarios), + 'resultados' => $resultados, + ]); + } +}