Viewing File: /home/assersoft/public_html/doctor-assistant/app/Filters/AuthFilter.php

<?php

namespace App\Filters;

require_once __DIR__ . "/../Helpers/jwt_helper.php";

use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Config\Services;

helper('cookie');

class AuthFilter implements FilterInterface {
    public function before(RequestInterface $request, $arguments = null) {

        if($request instanceof \CodeIgniter\HTTP\IncomingRequest){
            $currentRoute = $request->getUri()->getPath();
            $currentMethod = $request->getMethod();
            $jsonData = $request->getVar();
            if (
                is_object($jsonData) &&
                property_exists($jsonData, 'user_type') &&
                $jsonData->user_type === 'head_doctor' &&
                $currentRoute === 'user' && $currentMethod === 'post'
            ) {
                return null;
            }
        }

        $accessToken = get_cookie('access_token');
        if(!$accessToken) {
            return Services::response()->setStatusCode(ResponseInterface::HTTP_UNAUTHORIZED)->setJSON(['error' => 'No access token provided']);
        }

        $decodedToken = decodeJWT($accessToken);
        if(is_object($decodedToken) &&
            property_exists($decodedToken, 'error')) {
            return Services::response()->setStatusCode(ResponseInterface::HTTP_UNAUTHORIZED)->setJSON($decodedToken);
        }

        $request->user = $decodedToken;

        return null;
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) {}
}
Back to Directory File Manager