Resumen diario
This commit is contained in:
@@ -748,9 +748,7 @@ function enviarNotificacionSeguridadIntentos($emailDestino, $nombreUsuario, $dat
|
||||
|
||||
$asunto = "🚨 Alerta de Seguridad - Intentos de Verificación Excedidos";
|
||||
$mail->Subject = $asunto;
|
||||
|
||||
$tipoCorreo = $esCorreoAdicional ? "(Correo Adicional)" : "";
|
||||
|
||||
|
||||
$mail->Body = "
|
||||
<html>
|
||||
<head>
|
||||
@@ -761,7 +759,6 @@ function enviarNotificacionSeguridadIntentos($emailDestino, $nombreUsuario, $dat
|
||||
<div style='max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #ddd; border-radius: 10px;'>
|
||||
<div style='text-align: center; margin-bottom: 30px;'>
|
||||
<h1 style='color: #dc3545; margin: 0;'>🚨 Alerta de Seguridad</h1>
|
||||
<p style='color: #666; margin: 5px 0;'>$tipoCorreo</p>
|
||||
</div>
|
||||
|
||||
<div style='background-color: #f8f9fa; padding: 20px; border-radius: 8px; margin-bottom: 20px;'>
|
||||
@@ -820,85 +817,189 @@ function enviarNotificacionSeguridadIntentos($emailDestino, $nombreUsuario, $dat
|
||||
}
|
||||
}
|
||||
|
||||
/** Función para enviar el email de notificación de cuenta bloqueado **/
|
||||
function enviarNotificacionCuentaBloqueada($email, $esCorreoAdicional = false)
|
||||
/** Función para enviar el email de notificación de cuenta bloqueada **/
|
||||
function enviarNotificacionCuentaBloqueada($email)
|
||||
{
|
||||
$conn = getConnection();
|
||||
if (!$conn) throw new Exception("No se pudo conectar a la base de datos");
|
||||
if (!$conn) {
|
||||
throw new Exception("No se pudo conectar a la base de datos");
|
||||
}
|
||||
|
||||
// Buscar información del usuario por email (incluyendo correo extra)
|
||||
$emailEncrypted = encrypt($email);
|
||||
$sqlNotif = "SELECT nombre, email FROM usuarios_sistema WHERE email = ?";
|
||||
$stmt = sqlsrv_query($conn, $sqlNotif, [$emailEncrypted]);
|
||||
$sqlNotif = "
|
||||
SELECT
|
||||
u.nombre,
|
||||
u.email,
|
||||
u.notificaciones,
|
||||
u.notificaciones_extra,
|
||||
ce.correo as correo_extra
|
||||
FROM usuarios_sistema u
|
||||
LEFT JOIN correo_extra ce ON u.id_usuario = ce.id_usuario
|
||||
WHERE u.email = ?";
|
||||
|
||||
if (!$stmt) throw new Exception("Error al consultar información del usuario");
|
||||
$stmtUsuario = sqlsrv_query($conn, $sqlNotif, [$emailEncrypted]);
|
||||
|
||||
if ($stmtUsuario === false) {
|
||||
throw new Exception("Error al consultar información del usuario");
|
||||
}
|
||||
|
||||
$usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
|
||||
sqlsrv_free_stmt($stmt);
|
||||
$usuario = sqlsrv_fetch_array($stmtUsuario, SQLSRV_FETCH_ASSOC);
|
||||
sqlsrv_free_stmt($stmtUsuario);
|
||||
|
||||
if (!$usuario) {
|
||||
error_log("⚠️ Usuario no encontrado para enviar notificación de cuenta bloqueada");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 🔐 Desencriptar datos sensibles
|
||||
$usuario['email'] = decrypt($usuario['email']);
|
||||
$usuario['nombre'] = decrypt($usuario['nombre']);
|
||||
|
||||
$mail = new PHPMailer(true);
|
||||
$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;
|
||||
// Preparar datos para la notificación
|
||||
$datosNotificacion = [
|
||||
'email' => $usuario['email'],
|
||||
'nombre' => $usuario['nombre'],
|
||||
'fecha_hora' => date('Y-m-d H:i:s'),
|
||||
'ip' => $_SERVER['REMOTE_ADDR'] ?? 'Desconocida',
|
||||
'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'Desconocido'
|
||||
];
|
||||
|
||||
// Configuración de correo
|
||||
$mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | AduanaSoft');
|
||||
$mail->addAddress($usuario['email']);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
$resultadoEnvio = false;
|
||||
|
||||
$asunto = "🚫 Cuenta Bloqueada por Seguridad";
|
||||
$mail->Subject = $asunto;
|
||||
// Enviar al correo principal
|
||||
$resultadoPrincipal = enviarEmailCuentaBloqueada(
|
||||
$usuario['email'],
|
||||
$usuario['nombre'],
|
||||
$datosNotificacion
|
||||
);
|
||||
|
||||
$tipoCorreo = $esCorreoAdicional ? "(Correo Adicional)" : "";
|
||||
if ($resultadoPrincipal) {
|
||||
$resultadoEnvio = true;
|
||||
error_log("✅ Notificación de cuenta bloqueada enviada a: {$usuario['email']}");
|
||||
}
|
||||
|
||||
$mail->Body = "
|
||||
<html>
|
||||
// Enviar al correo adicional si está configurado
|
||||
if ($usuario['notificaciones_extra'] == 1 && !empty($usuario['correo_extra'])) {
|
||||
$resultadoExtra = enviarEmailCuentaBloqueada(
|
||||
$usuario['correo_extra'],
|
||||
$usuario['nombre'],
|
||||
$datosNotificacion,
|
||||
true // Indicar que es correo adicional
|
||||
);
|
||||
|
||||
if ($resultadoExtra) {
|
||||
$resultadoEnvio = true;
|
||||
error_log("✅ Notificación de cuenta bloqueada enviada a correo adicional: {$usuario['correo_extra']}");
|
||||
}
|
||||
}
|
||||
|
||||
return $resultadoEnvio;
|
||||
}
|
||||
|
||||
/** Función auxiliar para enviar el email físico de cuenta bloqueada **/
|
||||
function enviarEmailCuentaBloqueada($emailDestino, $nombreUsuario, $datos, $esCorreoAdicional = false)
|
||||
{
|
||||
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($emailDestino);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
|
||||
$asunto = "🚫 Cuenta Bloqueada por Seguridad";
|
||||
$mail->Subject = $asunto;
|
||||
|
||||
$mail->Body = "
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<title>Alerta de Seguridad</title>
|
||||
<title>Cuenta Bloqueada</title>
|
||||
</head>
|
||||
<body style='font-family: Arial, sans-serif; line-height: 1.6; color: #333;'>
|
||||
<div style='max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #ddd; border-radius: 10px;'>
|
||||
<div style='text-align: center; margin-bottom: 30px;'>
|
||||
<h1 style='color: #dc3545; margin: 0;'>🚫 Cuenta Bloqueada</h1>
|
||||
<p style='color: #666; margin: 5px 0;'>$tipoCorreo</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
<div style='background-color: #f8f9fa; padding: 20px; border-radius: 8px; margin-bottom: 20px;'>
|
||||
<p>Hola <b>{$usuario['nombre']}</b>,</p>
|
||||
<p>Tu cuenta ha sido bloqueada automáticamente tras 5 intentos fallidos al verificar tu código de recuperación.</p>
|
||||
<p>Por seguridad, deberás contactar a tu agente aduanal para reactivar tu cuenta.</p>
|
||||
<p>Fecha: <b>" . date('Y-m-d H:i:s') . "</b><br>
|
||||
IP: <b>" . ($_SERVER['REMOTE_ADDR'] ?? 'Desconocida') . "</b></p>
|
||||
<h2 style='color: #dc3545; margin-top: 0;'>Cuenta Bloqueada por Seguridad</h2>
|
||||
<p>Hola <strong>" . htmlspecialchars($nombreUsuario) . "</strong>,</p>
|
||||
<p>Tu cuenta ha sido <strong>bloqueada automáticamente</strong> tras detectarse múltiples intentos fallidos de verificación del código de recuperación de contraseña.</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div style='background-color: #fff3cd; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #ffc107;'>
|
||||
<h3 style='color: #856404; margin-top: 0;'>📋 Detalles del Bloqueo:</h3>
|
||||
<ul style='margin: 10px 0; padding-left: 20px;'>
|
||||
<li><strong>Fecha y Hora:</strong> " . htmlspecialchars($datos['fecha_hora']) . "</li>
|
||||
<li><strong>Dirección IP:</strong> " . htmlspecialchars($datos['ip']) . "</li>
|
||||
<li><strong>Navegador:</strong> " . htmlspecialchars(substr($datos['user_agent'], 0, 100)) . "...</li>
|
||||
<li><strong>Motivo:</strong> 5 intentos fallidos de verificación de código</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style='background-color: #d1ecf1; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #bee5eb;'>
|
||||
<h3 style='color: #0c5460; margin-top: 0;'>🔒 ¿Qué significa esto?</h3>
|
||||
<ul style='margin: 10px 0; padding-left: 20px;'>
|
||||
<li>Tu cuenta ha sido <strong>suspendida temporalmente</strong> por seguridad</li>
|
||||
<li>No podrás acceder al sistema hasta que sea reactivada</li>
|
||||
<li>Todos los códigos de recuperación han sido invalidados</li>
|
||||
<li>Este evento ha sido registrado en nuestros logs de seguridad</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style='background-color: #d4edda; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #c3e6cb;'>
|
||||
<h3 style='color: #155724; margin-top: 0;'>🔧 ¿Cómo reactivar tu cuenta?</h3>
|
||||
<p><strong>Deberás contactar a tu agente aduanal</strong> para solicitar la reactivación de tu cuenta.</p>
|
||||
<p>El agente aduanal podrá:</p>
|
||||
<ul style='margin: 10px 0; padding-left: 20px;'>
|
||||
<li>Verificar tu identidad</li>
|
||||
<li>Reactivar tu cuenta de manera segura</li>
|
||||
<li>Ayudarte a establecer una nueva contraseña</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style='background-color: #f8d7da; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #f5c6cb;'>
|
||||
<h3 style='color: #721c24; margin-top: 0;'>⚠️ ¿No fuiste tú?</h3>
|
||||
<p>Si <strong>no intentaste recuperar tu contraseña</strong>, esto podría indicar que alguien está tratando de acceder a tu cuenta de manera no autorizada.</p>
|
||||
<p><strong>Te recomendamos:</strong></p>
|
||||
<ul style='margin: 10px 0; padding-left: 20px;'>
|
||||
<li>Contactar inmediatamente a tu agente aduanal</li>
|
||||
<li>Reportar esta actividad sospechosa</li>
|
||||
<li>Revisar tus dispositivos en busca de malware</li>
|
||||
<li>Cambiar las contraseñas de tus otras cuentas importantes</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style='text-align: center; margin-top: 30px; padding-top: 20px; border-top: 1px solid #eee;'>
|
||||
<p style='color: #666; font-size: 12px; margin: 0;'>
|
||||
Esta es una notificación automática de seguridad.<br>
|
||||
Si tienes preguntas, contacta a nuestro equipo de soporte.
|
||||
Si tienes preguntas, contacta a tu agente aduanal o a nuestro equipo de soporte.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>";
|
||||
|
||||
$mail->send();
|
||||
error_log("✅ Notificación de cuenta bloqueada enviada a: {$usuario['email']}");
|
||||
return true;
|
||||
// Enviar el correo
|
||||
$mail->send();
|
||||
return true;
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("❌ Error al enviar notificación de cuenta bloqueada: " . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function cambiarPasswordVista()
|
||||
|
||||
Reference in New Issue
Block a user