Tul xxx Tul
User / IP
:
216.73.217.33
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
siscaps
/
controllers
/
Viewing: AuthController.php
<?php class AuthController { public function loginForm() { // Generar token CSRF si no existe if (empty($_SESSION['csrf'])) { $_SESSION['csrf'] = bin2hex(random_bytes(32)); } require __DIR__ . '/../views/auth/login.php'; } public function login() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { header('Location: ' . BASE_URL . '?route=login'); exit; } $csrf = $_POST['csrf'] ?? ''; if (!hash_equals($_SESSION['csrf'] ?? '', $csrf)) { $_SESSION['flash_error'] = 'Sesión inválida. Intenta nuevamente.'; header('Location: ' . BASE_URL . '?route=login'); exit; } $loginType = $_POST['login_type'] ?? ''; if (!in_array($loginType, ['cliente','interno'], true)) { $_SESSION['flash_error'] = 'Selecciona un tipo de acceso válido.'; header('Location: ' . BASE_URL . '?route=login'); exit; } // Autenticación por CÓDIGO DE CLIENTE (sin contraseña) if ($loginType === 'cliente') { $code = trim((string)($_POST['customer_code'] ?? $_POST['identifier'] ?? '')); if ($code === '') { $_SESSION['flash_error'] = 'Ingresa tu código de cliente.'; header('Location: ' . BASE_URL . '?route=login'); exit; } try { $pdo = (new Database())->getConnection(); $stmt = $pdo->prepare("SELECT id, name, email, status FROM customers WHERE customer_code = :code LIMIT 1"); $stmt->execute([':code' => $code]); $customer = $stmt->fetch(PDO::FETCH_ASSOC); } catch (Throwable $e) { $customer = false; } if (!$customer) { $_SESSION['flash_error'] = 'Código de cliente no encontrado.'; header('Location: ' . BASE_URL . '?route=login'); exit; } // Inicia sesión como CLIENTE usando datos del registro de customers $_SESSION['client_user'] = [ 'id' => 'c:' . (int)$customer['id'], 'name' => $customer['name'] ?: ('Cliente ' . $code), 'email' => (string)($customer['email'] ?? ''), 'role' => 'CLIENTE', 'customer_id' => (int)$customer['id'], ]; // Compatibilidad: exponer temporalmente como 'user' en esta petición $_SESSION['user'] = $_SESSION['client_user']; $_SESSION['flash_success'] = '¡Bienvenido, ' . htmlspecialchars($_SESSION['client_user']['name'], ENT_QUOTES, 'UTF-8') . '!'; header('Location: ' . BASE_URL . '?route=cliente.dashboard'); exit; } // Autenticación tradicional para USUARIOS INTERNOS (ADMIN/CAJERO/LECTOR) $identifier = trim($_POST['identifier'] ?? ''); // usuario o correo $password = (string)($_POST['password'] ?? ''); if ($identifier === '' || $password === '') { $_SESSION['flash_error'] = 'Ingresa usuario/correo y contraseña.'; header('Location: ' . BASE_URL . '?route=login'); exit; } $user = User::findByUsernameOrEmail($identifier); if (!$user || !$user->verifyPassword($password)) { $_SESSION['flash_error'] = 'Usuario o contraseña incorrectos.'; header('Location: ' . BASE_URL . '?route=login'); exit; } // Validar que ingrese por la opción correcta según su rol if ($loginType === 'interno' && !in_array($user->role, ['ADMIN','CAJERO','LECTOR'], true)) { $_SESSION['flash_error'] = 'Tu cuenta es de cliente. Elige "Soy Cliente" para ingresar.'; header('Location: ' . BASE_URL . '?route=login'); exit; } // Autenticado (usuarios internos) $_SESSION['internal_user'] = [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'role' => $user->role, ]; // Compatibilidad: exponer temporalmente como 'user' en esta petición $_SESSION['user'] = $_SESSION['internal_user']; $_SESSION['flash_success'] = '¡Bienvenido, ' . htmlspecialchars($_SESSION['internal_user']['name'] ?? $user->email, ENT_QUOTES, 'UTF-8') . '!'; if (function_exists('redirectToDashboard')) { redirectToDashboard(); } else { header('Location: ' . BASE_URL . '?route=dashboard'); exit; } } public function logout() { $type = $_GET['type'] ?? ''; if ($type === 'cliente') { // Cerrar solo sesión de cliente if (function_exists('logoutContext')) { logoutContext('cliente'); } // Limpiar "user" legado y redirigir al login sin cambiar de contexto if (isset($_SESSION['user'])) { unset($_SESSION['user']); } header('Location: ' . BASE_URL . '?route=login&closed=cliente'); exit; } elseif ($type === 'interno') { // Cerrar solo sesión de usuario interno if (function_exists('logoutContext')) { logoutContext('interno'); } // Limpiar "user" legado y redirigir al login sin cambiar de contexto if (isset($_SESSION['user'])) { unset($_SESSION['user']); } header('Location: ' . BASE_URL . '?route=login&closed=interno'); exit; } else { // Cerrar todas las sesiones if (function_exists('logoutContext')) { logoutContext(''); } else { $_SESSION = []; if (ini_get('session.use_cookies')) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly'] ); } session_destroy(); } if (function_exists('setFlashMessage')) { setFlashMessage('success', 'Sesión cerrada.'); } header('Location: ' . BASE_URL . '?route=login&closed=1'); exit; } } }
Coded With 💗 by
0x6ick