Shield est le framework officiel d'authentification et d'autorisation pour CodeIgniter 4. Bien qu'il fournisse un ensemble de base d'outils couramment utilisés sur les sites Web, il est conçu pour être flexible et facilement personnalisable.
Pour installer CodeIgniter Shield il faut d'abord avoir installé CodeIgniter 4 sur le projet.
Pour installer CodeIgniter Shield, on dois utiliser Composer. Il faut ouvrir le terminal et naviguer vers le dossier du projet CodeIgniter, puis exécuter la commande suivante :
composer require codeigniter4/shield
Cette commande va télécharger et installer la dernière version de CodeIgniter Shield et ses dépendances.
Une fois installé, on doit activer et configurer Shield. Pour cela, il faut publier les fichiers de configuration dans le projet :
php spark init
Cela va copier les fichiers nécessaires dans le dossier app/Config du projet. Ces fichiers de configuration permettent de personnaliser le comportement de Shield, comme la gestion des sessions ou des règles d'authentification.
CodeIgniter Shield nécessite quelques tables dans la base de données pour gérer les utilisateurs et leurs rôles. On peut créer ces tables en exécutant les migrations suivantes :
php spark migrate
Cela va créer les tables nécessaires (comme users, roles, etc.) dans la base de données.
On peut configurer les routes pour l'authentification. Dans le fichier app/Config/Routes.php, on peut ajouter les routes nécessaires pour les actions d'authentification, comme la connexion et l'inscription :
$routes->group('auth', function($routes) {
$routes->get('login', 'AuthController::login');
$routes->post('login', 'AuthController::loginAction');
$routes->get('register', 'AuthController::register');
$routes->post('register', 'AuthController::registerAction');
});
Il faut créer un contrôleur qui gérera les actions de connexion, d'inscription, etc. Par exemple, dans app/Controllers/AuthController.php, on peut créer des méthodes pour gérer ces actions.
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\Shield\Authentication\Authenticators\LocalAuthenticator;
class AuthController extends Controller
{
public function login()
{
// code
}
public function register()
{
// code
}
}