main
inicio
This commit is contained in:
76
app/controllers/login.php
Normal file
76
app/controllers/login.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../helpers/session.php';
|
||||
require_once __DIR__ . '/../../config/database.php';
|
||||
require_once __DIR__ . '/../helpers/crypto.php';
|
||||
require_once __DIR__ . '/../helpers/bitacoras.php';
|
||||
require_once __DIR__ . '/../helpers/env.php';
|
||||
loadEnv();
|
||||
|
||||
function index()
|
||||
{
|
||||
include __DIR__ . '/../../views/login/index.php';
|
||||
}
|
||||
|
||||
|
||||
function validar()
|
||||
{
|
||||
|
||||
$conn = getConnection();
|
||||
|
||||
$email = trim($_POST['email'] ?? '');
|
||||
$password = $_POST['password'] ?? '';
|
||||
$ip = $_SERVER['REMOTE_ADDR'] ?? 'N/A';
|
||||
|
||||
if (empty($email) || empty($password)) {
|
||||
$_SESSION['login_error'] = 'Debes ingresar ambos campos.';
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
$emailEncrypted = encrypt($email);
|
||||
|
||||
$sql = "SELECT id_usuario, nombre, email, password_hash, tipo_usuario, activo
|
||||
FROM usuarios_sistema
|
||||
WHERE email = ?";
|
||||
$stmt = sqlsrv_query($conn, $sql, [$emailEncrypted]);
|
||||
|
||||
if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
|
||||
if (!$row['activo']) {
|
||||
registrarBitacora($conn, $row['id_usuario'], $email, $ip, 0, 'Usuario inactivo');
|
||||
$_SESSION['login_error'] = 'Tu usuario está inactivo.';
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
if (password_verify($password, $row['password_hash'])) {
|
||||
$_SESSION['usuario_id'] = $row['id_usuario'];
|
||||
$_SESSION['usuario_nombre'] = decrypt($row['nombre']);
|
||||
$_SESSION['usuario_email'] = $email;
|
||||
$_SESSION['tipo_usuario'] = $row['tipo_usuario'];
|
||||
|
||||
registrarBitacora($conn, $row['id_usuario'], $email, $ip, 1, 'Login exitoso');
|
||||
|
||||
// Redirección por rol
|
||||
if ($row['tipo_usuario'] === 'importador') {
|
||||
header('Location: /IMPORTADORES/importadores/dashboard');
|
||||
} elseif ($row['tipo_usuario'] === 'agente_aduanal') {
|
||||
header('Location: /IMPORTADORES/AGENTES/dashboard');
|
||||
} else {
|
||||
header('Location: /IMPORTADORES/importadores/dashboard');
|
||||
}
|
||||
exit;
|
||||
} else {
|
||||
registrarBitacora($conn, $row['id_usuario'], $email, $ip, 0, 'Contraseña incorrecta');
|
||||
}
|
||||
|
||||
} else {
|
||||
registrarBitacora($conn, null, $email, $ip, 0, 'Usuario no encontrado');
|
||||
}
|
||||
|
||||
$_SESSION['login_error'] = 'Credenciales incorrectas.';
|
||||
header('Location: /IMPORTADORES/login');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user