Welcome Guest, Not a member yet? Register   Sign In
Global Filter not working for error pages
#1

(This post was last modified: 02-16-2021, 01:28 AM by Chivinsdev.)

I have set some filters to redirect a person to login page if not logged in
but now its not showing 404 error page if the page is not found instead it redirect me to login also.
Is there anyway i can solve this issue.
I have tried this but not working



PHP Code:
<?php namespace App\Core\Auth\Filters;

use 
Config\Services;
use 
CodeIgniter\HTTP\RequestInterface;
use 
CodeIgniter\HTTP\ResponseInterface;
use 
CodeIgniter\Filters\FilterInterface;
use 
App\Core\Auth\Auth;

class 
Login implements FilterInterface
{
    
/**
     * Do whatever processing this filter needs to do.
     * By default it should not return anything during
     * normal execution. However, when an abnormal state
     * is found, it should return an instance of
     * CodeIgniter\HTTP\Response. If it does, script
     * execution will end and that Response will be
     * sent back to the client, allowing for error pages,
     * redirects, etc.
     *
     * @param \CodeIgniter\HTTP\RequestInterface $request
     * @param array|null                         $params
     *
     * @return mixed
     */
    
public function before(RequestInterface $request$params null)
    {
        
$current current_url();

        
// Make sure this isn't already a login route
        
if (in_array($current, [site_url('ErrorHandler/error404'), site_url('login')]))
        {
            return;
        }

        // if user is not logged in then send to the login page
        
        
if (! Auth::isLoggedIn())
        {
            
// Set the current page so that the user can be redirected back after login
            
setRedirect(current_url());

            return 
redirect()->to(site_url('login'));
        }
    }

    
//--------------------------------------------------------------------

    /**
     * Allows After filters to inspect and modify the response
     * object as needed. This method does not allow any way
     * to stop execution of other after filters, short of
     * throwing an Exception or Error.
     *
     * @param \CodeIgniter\HTTP\RequestInterface  $request
     * @param \CodeIgniter\HTTP\ResponseInterface $response
     * @param array|null                          $arguments
     *
     * @return void
     */
    
public function after(RequestInterface $requestResponseInterface $response$arguments null)
    {

    }

    
//--------------------------------------------------------------------


And within my route $file i have set the overide the 404 page to this

PHP Code:
$routes->set404Override(APP_NAMESPACE '\Controllers\ErrorHandler::error404'); 


Then in my ErrorHandlerController


PHP Code:
<?php

namespace App\Controllers;

class 
ErrorHandler extends BaseController
{
    public function error404()
    {
        echo view('errors/html/error_404'$this->data);
    }
}


Please I real need someone to help me 
Reply




Theme © iAndrew 2016 - Forum software by © MyBB