<?php

namespace App\Middleware;

use App\Services\AuthService;

/**
 * Middleware de autenticación
 * Protege rutas que requieren autenticación
 */
class AuthMiddleware
{
    private AuthService $auth;

    public function __construct()
    {
        $this->auth = new AuthService();
    }

    /**
     * Verificar autenticación y redireccionar si es necesario
     */
    public function handle(string $redirectTo = 'admin/login'): void
    {
        if (!$this->auth->check()) {
            // Guardar URL de destino para redireccionar después del login
            $_SESSION['intended_url'] = $_SERVER['REQUEST_URI'];

            header('Location: ' . base_url($redirectTo));
            exit;
        }
    }

    /**
     * Verificar si está autenticado (sin redireccionar)
     */
    public function check(): bool
    {
        return $this->auth->check();
    }

    /**
     * Obtener usuario autenticado
     */
    public function user(): ?array
    {
        return $this->auth->user();
    }

    /**
     * Solo permitir invitados (usuarios no autenticados)
     */
    public function guest(string $redirectTo = 'admin/dashboard'): void
    {
        if ($this->auth->check()) {
            header('Location: ' . base_url($redirectTo));
            exit;
        }
    }
}
