up
This commit is contained in:
@@ -20,9 +20,20 @@ if (isUserLoggedIn()) {
|
||||
}
|
||||
|
||||
$error = '';
|
||||
$success = '';
|
||||
$loginBlocked = false;
|
||||
$clientIp = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
|
||||
|
||||
// Verificar si viene de logout
|
||||
if (isset($_GET['logged_out']) && $_GET['logged_out'] == '1') {
|
||||
$success = 'Sesión cerrada correctamente.';
|
||||
}
|
||||
|
||||
// Verificar si la sesión expiró
|
||||
if (isset($_GET['session_expired']) && $_GET['session_expired'] == '1') {
|
||||
$error = 'Su sesión ha expirado por inactividad. Por favor, inicie sesión nuevamente.';
|
||||
}
|
||||
|
||||
// Verificar si la IP está bloqueada
|
||||
if (!checkLoginAttempts($clientIp)) {
|
||||
$loginBlocked = true;
|
||||
@@ -34,31 +45,31 @@ if ($_POST && !$loginBlocked) {
|
||||
$username = trim($_POST['username'] ?? '');
|
||||
$password = $_POST['password'] ?? '';
|
||||
|
||||
if ($username === ADMIN_USERNAME) {
|
||||
// Verificar contraseña
|
||||
$adminHash = constant('ADMIN_PASSWORD');
|
||||
if (password_verify($password, $adminHash)) {
|
||||
// Login exitoso
|
||||
clearLoginAttempts($clientIp);
|
||||
$_SESSION['admin_logged_in'] = true;
|
||||
$_SESSION['last_activity'] = time();
|
||||
$_SESSION['login_ip'] = $clientIp;
|
||||
$_SESSION['login_time'] = time();
|
||||
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
// Usar el nuevo sistema de autenticación unificado
|
||||
$adminUser = authenticateUser($username, $password);
|
||||
|
||||
if ($adminUser) {
|
||||
// Login exitoso
|
||||
clearLoginAttempts($clientIp);
|
||||
$_SESSION['admin_logged_in'] = true;
|
||||
$_SESSION['admin_user'] = $adminUser;
|
||||
$_SESSION['last_activity'] = time();
|
||||
$_SESSION['login_ip'] = $clientIp;
|
||||
$_SESSION['login_time'] = time();
|
||||
|
||||
header('Location: index.php');
|
||||
exit;
|
||||
} else {
|
||||
// Login fallido
|
||||
recordFailedLogin($clientIp);
|
||||
$error = 'Usuario o contraseña incorrectos.';
|
||||
|
||||
// Verificar si se bloqueó después de este intento
|
||||
if (!checkLoginAttempts($clientIp)) {
|
||||
$loginBlocked = true;
|
||||
$error = 'Demasiados intentos de login. Cuenta bloqueada por ' . (LOGIN_LOCKOUT_TIME / 60) . ' minutos.';
|
||||
}
|
||||
}
|
||||
|
||||
// Login fallido
|
||||
recordFailedLogin($clientIp);
|
||||
$error = 'Usuario o contraseña incorrectos.';
|
||||
|
||||
// Verificar si se bloqueó después de este intento
|
||||
if (!checkLoginAttempts($clientIp)) {
|
||||
$loginBlocked = true;
|
||||
$error = 'Demasiados intentos de login. Cuenta bloqueada por ' . (LOGIN_LOCKOUT_TIME / 60) . ' minutos.';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@@ -200,8 +211,8 @@ if ($_POST && !$loginBlocked) {
|
||||
name="username"
|
||||
required
|
||||
<?= $loginBlocked ? 'disabled' : '' ?>
|
||||
value="admin"
|
||||
readonly
|
||||
placeholder="Ingresa tu usuario"
|
||||
value="<?= htmlspecialchars($_POST['username'] ?? '') ?>"
|
||||
>
|
||||
</div>
|
||||
|
||||
@@ -231,6 +242,14 @@ if ($_POST && !$loginBlocked) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Success Messages -->
|
||||
<?php if ($success): ?>
|
||||
<div class="alert alert-success">
|
||||
<i class="fas fa-check-circle me-2"></i>
|
||||
<?= htmlspecialchars($success) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Error Messages -->
|
||||
<?php if ($error && !$loginBlocked): ?>
|
||||
<div class="alert alert-danger">
|
||||
|
||||
Reference in New Issue
Block a user