FIX_CORS_ERROR

This commit is contained in:
VENKATESHWARAN 2026-06-25 17:57:39 +05:30
parent d133fbabb5
commit d0e29cc5ac

View File

@ -3,6 +3,7 @@
namespace App\Filters; namespace App\Filters;
use App\Helpers\JWTToken; use App\Helpers\JWTToken;
use App\Filters\Cors;
use CodeIgniter\Filters\FilterInterface; use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
@ -18,6 +19,13 @@ use App\Models\LevelContactModel;
class AuthJWT implements FilterInterface class AuthJWT implements FilterInterface
{ {
protected Cors $corsFilter;
public function __construct()
{
$this->corsFilter = new Cors();
}
// public function before(RequestInterface $request, $arguments = null) // public function before(RequestInterface $request, $arguments = null)
// { // {
// $jwt = $request->getHeader('Authorization'); // $jwt = $request->getHeader('Authorization');
@ -84,20 +92,20 @@ class AuthJWT implements FilterInterface
$authHeader = $request->getHeaderLine('Authorization'); $authHeader = $request->getHeaderLine('Authorization');
if (!$authHeader) { if (!$authHeader) {
return $this->reject(403, 'Access Forbidden'); return $this->reject($request, 403, 'Access Forbidden');
} }
$result = JWTToken::validateJWT($authHeader); $result = JWTToken::validateJWT($authHeader);
if ($result['status'] !== true) { if ($result['status'] !== true) {
return $this->reject(401, $result['message']); return $this->reject($request, 401, $result['message']);
} }
$decoded = $result['decoded']; $decoded = $result['decoded'];
$id = $decoded['id'] ?? null; $id = $decoded['id'] ?? null;
if (!$id) { if (!$id) {
return $this->reject(401, 'Invalid token payload'); return $this->reject($request, 401, 'Invalid token payload');
} }
if (isset($decoded['emp_code'])) { if (isset($decoded['emp_code'])) {
@ -111,7 +119,7 @@ class AuthJWT implements FilterInterface
if (!$user || $user['token_time_out'] <= time()) { if (!$user || $user['token_time_out'] <= time()) {
$model->update($id, ['token_time_out' => null]); $model->update($id, ['token_time_out' => null]);
return $this->reject(401, 'Token expired'); return $this->reject($request, 401, 'Token expired');
} }
// Refresh sliding expiration // Refresh sliding expiration
@ -132,12 +140,20 @@ class AuthJWT implements FilterInterface
return true; return true;
} }
private function reject(int $code, string $message) private function reject(RequestInterface $request, int $code, string $message): ResponseInterface
{ {
return service('response') $response = service('response');
->setStatusCode($code) $response->setStatusCode($code);
->setJSON(['status' => $code, 'message' => $message]) $response->setContentType('application/json');
->send(); $response->setBody(json_encode([
'status' => $code,
'message' => $message,
]));
// Early before-filter returns skip global Cors after(), so attach CORS here.
$this->corsFilter->after($request, $response);
return $response;
} }