diff --git a/app/controllers/login.php b/app/controllers/login.php index 98bff53..7c1e57e 100644 --- a/app/controllers/login.php +++ b/app/controllers/login.php @@ -4,6 +4,11 @@ require_once __DIR__ . '/../../config/database.php'; require_once __DIR__ . '/../helpers/crypto.php'; require_once __DIR__ . '/../helpers/bitacoras.php'; require_once __DIR__ . '/../helpers/env.php'; + +require_once __DIR__ . '/../../vendor/autoload.php'; +use PHPMailer\PHPMailer\PHPMailer; +use PHPMailer\PHPMailer\Exception; + loadEnv(); function index() @@ -11,10 +16,8 @@ function index() include __DIR__ . '/../../views/login/index.php'; } - function validar() { - $conn = getConnection(); $email = trim($_POST['email'] ?? ''); @@ -72,5 +75,229 @@ function validar() header('Location: /IMPORTADORES/login'); } +function recuperar() +{ + include __DIR__ . '/../../views/login/recuperar.php'; +} +function enviarCodigo() +{ + $conn = getConnection(); + // Obtener el correo proporcionado en el formulario + $email = trim($_POST['email'] ?? ''); + + // Verificar si el correo es válido + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + die("❌ Correo inválido."); + } + + // Encriptar el correo ingresado para comparar con el de la base de datos + $emailEncrypted = encrypt($email); + + // Consultar si el correo encriptado existe en la base de datos + $sql = "SELECT id_usuario FROM usuarios_sistema WHERE email = ?"; + $stmt = sqlsrv_query($conn, $sql, [$emailEncrypted]); + + if (!$stmt || !($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))) { + die("❌ Correo no encontrado."); + } + + // Generar el código de recuperación y la expiración + $codigo = rand(100000, 999999); + $expira = date('Y-m-d H:i:s', strtotime('+10 minutes')); + + // Guardar el código y la expiración en la tabla de recuperación de contraseñas + $insert = "INSERT INTO recuperacion_password (email, codigo, expiracion) VALUES (?, ?, ?)"; + $result = sqlsrv_query($conn, $insert, [$emailEncrypted, $codigo, $expira]); + + if (!$result) { + die("❌ Error al guardar el código de recuperación."); + } + + // Enviar correo con el código utilizando PHPMailer + try { + $mail = new PHPMailer(true); + + // Configuración de servidor SMTP + $mail->isSMTP(); + $mail->Host = 'secure.emailsrvr.com'; + $mail->SMTPAuth = true; + $mail->Username = 'noreply@aduanasoft.com.mx'; + $mail->Password = $_ENV['SMTP_PASS']; + $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + $mail->Port = 587; + + // Configuración del correo + $mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | AduanaSoft'); + $mail->addAddress($email); + $mail->CharSet = 'UTF-8'; + $mail->isHTML(true); + $mail->Subject = 'Código de recuperación de contraseña'; + + // Cuerpo del correo + $mail->Body = " +