Salut, je suis débutant en programmation, je suis entrain d'utiliser codeigniter 4.5 pour créer un système de gestion des utilisateurs.
Tout fonctionne très bien jusqu’à ce que j'essaie de créer une protection des routes qui permettra de rediriger sur le formulaire de connexion les utilisateurs qui vont essayer d’accéder au dashboard ou à la page de profil sans passer par le formulaire de connexion. Malheureusement, ça affiche un message d'erreur quelque soit la méthode que j'aie utilisé pour protéger les routes.
Voici le message d'erreur:J'ai inseré une immage contenant plus d'information sur le message d'erreur.TypeError: str_contains(): Argument #1 ($haystack) must be of type string, null given
Pour proteger les routes, j'ai créé un fichier AuthFilter.php dans le dossier App\Filters,
Voici les contenus de ce fichier:
J'ai modifié ensuite le fichier Filters qui se trouve dans le dossier App\confid de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php namespace App\Filters; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Filters\FilterInterface; class AuthFilter implements FilterInterface { public function before(RequestInterface $request, $arguments = null) { if (!session()->has('loggedInUser')) { return redirect()->to('auth/login')->with('fail', 'You must be logged in, To access this page.'); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // Après le filtre } }
Enfin, j'ai apporté la modification suivantes aux Routes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php namespace Config; use CodeIgniter\Config\Filters as BaseFilters; use CodeIgniter\Filters\Cors; use CodeIgniter\Filters\CSRF; use CodeIgniter\Filters\DebugToolbar; use CodeIgniter\Filters\ForceHTTPS; use CodeIgniter\Filters\Honeypot; use CodeIgniter\Filters\InvalidChars; use CodeIgniter\Filters\PageCache; use CodeIgniter\Filters\PerformanceMetrics; use CodeIgniter\Filters\SecureHeaders; class Filters extends BaseFilters { public array $aliases = [ 'auth' => \App\Filters\AuthFilter::class, ]; public array $methods = []; public array $filters = []; }
NB: Voici les urls: localhost/app/users/profil | localhost/app/ ou localhost/app/Home
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Amener l'utilisateur sur la page de profil $routes->group('users', ['filter' => 'auth'], function(RouteCollection $routes) { $routes->get('profil', 'Profil::profilUtilisateur'); }); // Amener l'utilisateur sur le dashboard $routes->group('', ['filter' => 'auth'], function(RouteCollection $routes) { $routes->get('/Home', 'Home::index'); });
Les urls fonctionnent normalement en passant par le formulaire de connexion, mais quand j'ai essayé d’accéder directement au dashboard ou à la page de profil sans passer par le formulaire de connexion, le message d'erreur s'affiche. Je pense que c'est un bogue dans la version de codeigniter 4.5.
Comment pourriez-vous m'aider svp?
Cordialement,
Samgione.
Partager