FIX_CORS_ERROR
This commit is contained in:
parent
d133fbabb5
commit
d0e29cc5ac
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user