50 lines
1.4 KiB
PHP
50 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Filters;
|
|
|
|
use CodeIgniter\Filters\FilterInterface;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
|
|
class AuthFilter implements FilterInterface
|
|
{
|
|
/**
|
|
* Check if user is authenticated
|
|
*
|
|
* @param RequestInterface $request
|
|
* @param array|null $arguments
|
|
*
|
|
* @return RequestInterface|ResponseInterface|string|void
|
|
*/
|
|
public function before(RequestInterface $request, $arguments = null)
|
|
{
|
|
// Check if user is authenticated
|
|
if (!defined('AUTHENTICATED') || AUTHENTICATED === false) {
|
|
// Check if this is an AJAX request
|
|
if ($request->isAJAX()) {
|
|
return \Config\Services::response()
|
|
->setStatusCode(401)
|
|
->setJSON(['error' => 'Unauthorized']);
|
|
}
|
|
|
|
// Redirect to login page
|
|
return redirect()->to('/');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Allows After filters to inspect and modify the response
|
|
* object as needed.
|
|
*
|
|
* @param RequestInterface $request
|
|
* @param ResponseInterface $response
|
|
* @param array|null $arguments
|
|
*
|
|
* @return ResponseInterface|void
|
|
*/
|
|
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
|
|
{
|
|
// No action needed after request
|
|
}
|
|
}
|