my filters are working for different purposes but i'm using it different . I don't put filter in route
At : /var/www/htdocs/appstarter/app/Filters
//i have my classes
├── MyFilter.php
├── MyFilter10.php
├── MyFilter2.php
├── MyFilter3.php
├── MyFilter4.php
├── MyFilter5.php
├── MyFilter6.php
├── MyFilter7.php
├── MyFilter8.php
└── MyFilter9.php
eg
Code:
<?php namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class MyFilter implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
session_start();
$logic=isset($_SESSION['role']) ;
if($logic==false)
{
return redirect('spam');
}
then in app/Config/Filters.php
Code:
<?php namespace Config;
use CodeIgniter\Config\BaseConfig;
class Filters extends BaseConfig
{
// Makes reading things below nicer,
// and simpler to change out script that's used.
public $aliases = [
'csrf' => \CodeIgniter\Filters\CSRF::class,
'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
'honeypot' => \CodeIgniter\Filters\Honeypot::class,
'myfilter'=> \App\Filters\MyFilter::class,
'myfilter2'=> \App\Filters\MyFilter2::class,
];
// Always applied before every request
public $globals = [
'before' => [
//'honeypot'
// 'csrf',
],
'after' => [
'toolbar',
//'honeypot'
],
];
// Works on all of a particular HTTP method
// (GET, POST, etc) as BEFORE filters only
// like: 'post' => ['CSRF', 'throttle'],
public $methods = [];
// List filter aliases and any before/after uri patterns
// that they should run on, like:
// 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']],
public $filters = [
'myfilter' => ['before' => ['newblog']],
'myfilter9' => ['before' => ['admin']],
//etc
];
}
CMS CI4 A CMS system, runs out of the box written on top of CI4
Arch Book CodeIgniter4 on Apache(pages 92-114)