El filter Autentica

Filter (Autentica)

Implementem la lògica d'autenticació. Important: hem de registrar l'àlies després de crear la classe.

Fitxer: app/Filters/Autentica.php

<?php

namespace App\Filters;

use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;

class Autentica implements FilterInterface
{
    public function before(RequestInterface $request, $arguments = null)
    {
        // 1. Validació bàsica: Està logat?
        if (!session()->get('loggedIn')) {
            return redirect()->to(base_url('userdemo/login'))->with('error', 'Si us plau, inicia sessió.');
        }

        // 2. Validació d'arguments (Noms específics)
        // Si la ruta té arguments, ex: filter:autentica:admin,profe
        if ($arguments !== null) {
            $userName = session()->get('name');
            
            // Si el nom de l'usuari no està a la llista d'arguments permesos
            if (!in_array($userName, $arguments)) {
                return redirect()->back()->with('error', 'Accés no permès per al teu usuari.');
            }
        }
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
        // No cal fer res després
    }
}

IMPORTANT! Cal registrar el filtre per poder aplicar-lo dins del routes

Registrar el filtre a app/Config/Filters.php.

public $aliases = [
    'csrf'      => \CodeIgniter\Filters\CSRF::class,
    // ...
    'autentica' => \App\Filters\Autentica::class, // Registre
];
En cas que una ruta requereixi que s'apliquin dos filtres, llavors caldrà crear un alias que s'associï als dos filtres, com l'exemple següent:
public $aliases = [
  // ...
  'apiPrep' => [
        \App\Filters\Negotiate::class,
        \App\Filters\ApiAuth::class,
  ],
];

Revisió núm. 2
Admin l’ha creat 2026-02-09 08:54:11 UTC
Admin l’ha actualitzat 2026-02-09 09:13:21 UTC