Welcome Guest, Not a member yet? Register   Sign In
Controller Filter Not Running
#1

(This post was last modified: 09-08-2024, 09:31 PM by occitan.)

I am new to using filters so please forgive me if I am not understanding. Following the docs, I have the code below, but nothing happens when I visit that controller method (cases/index):

What am I missing? 

I am using version 4.4.4.


PHP Code:
App/Filters/AuthenticationFilter.php

[php]namespace App\Filters;
use 
CodeIgniter\Filters\FilterInterface;
use 
CodeIgniter\HTTP\RequestInterface;
use 
CodeIgniter\HTTP\ResponseInterface;
use 
Config\Services;

class 
AuthenticationFilter implements FilterInterface {
    public function before(RequestInterface $request$arguments null) {
        $this->session Services::session();
        if (!$this->session->has('loggedin') || !$this->session->loggedin == true) {
            redirect('login');
        }
    }

    public function after(RequestInterface $requestResponseInterface $response) {
      
    
}  



App/Config/Filters,php

PHP Code:
[php]namespace Config;
use 
CodeIgniter\Config\BaseConfig;
use 
CodeIgniter\Filters\CSRF;
use 
CodeIgniter\Filters\DebugToolbar;
use 
CodeIgniter\Filters\Honeypot;
use 
CodeIgniter\Filters\InvalidChars;
use 
CodeIgniter\Filters\SecureHeaders;

class 
Filters extends BaseConfig
{
    /**
    * Configures aliases for Filter classes to
    * make reading things nicer and simpler.
    *
    * @var array<string, class-string|list<class-string>> [filter_name => classname]
    *                                                    or [filter_name => [classname1, classname2, ...]]
    */
    public array $aliases = [
        'csrf'          => CSRF::class,
        'toolbar'      => DebugToolbar::class,
        'honeypot'      => Honeypot::class,
        'invalidchars'  => InvalidChars::class,
        'secureheaders' => SecureHeaders::class,
        'authentication' => \App\Filters\AuthenticationFilter::class,
    ];

    /**
    * List of filter aliases that are always
    * applied before and after every request.
    *
    * @var array<string, array<string, array<string, string>>>|array<string, list<string>>
    */
    public array $globals = [
        'before' => [
            // 'honeypot',
            // 'csrf',
            // 'invalidchars',
        ],
        'after' => [
            'toolbar',
            // 'honeypot',
            // 'secureheaders',
        ],
    ];

    /**
    * List of filter aliases that works on a
    * particular HTTP method (GET, POST, etc.).
    *
    * Example:
    * 'post' => ['foo', 'bar']
    *
    * If you use this, you should disable auto-routing because auto-routing
    * permits any HTTP method to access a controller. Accessing the controller
    * with a method you don't expect could bypass the filter.
    */
    public array $methods = [];

    /**
    * List of filter aliases that should run on any
    * before or after URI patterns.
    *
    * Example:
    * 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']]
    */
    public array $filters = [
        'AuthenticationFilter' => ['before' => ['cases/index']]
    ];

Reply
#2

I found that I was missing , $arguments = null in the after method.
Reply




Theme © iAndrew 2016 - Forum software by © MyBB