<?php

declare(strict_types=1);

namespace App\Controllers\Admin;

use App\Core\Auth;
use App\Core\Csrf;
use App\Core\Request;
use App\Core\Response;

/**
 * Base des contrôleurs back-office : garde de session + aide CSRF.
 */
abstract class AdminController
{
    /** Retourne une redirection si l'utilisateur n'est pas authentifié, sinon null. */
    protected function guard(): ?Response
    {
        if (!Auth::check()) {
            return Response::redirect(base_url('admin/login'));
        }
        return null;
    }

    protected function csrfValid(Request $request): bool
    {
        $token = $request->input('_csrf');
        return Csrf::check(is_string($token) ? $token : null);
    }
}
