clientAPI = new ClientApiModel(); $this->myLogger = \Config\Services::mylogger(); } public function before(RequestInterface $request, $arguments = null) { $response = service('response'); try { $authHeader = $request->getHeaderLine('Authorization'); // Check if header exists if (empty($authHeader)) { $this->myLogger->log('error', 'Authorization header missing'); return $response->setJson(['status' => "Failure", 'error' => ['message'=>'Authorization header missing','code'=> 401]], 401); } if(!str_contains($authHeader, 'Bearer ')){ $this->myLogger->log('error', 'Authorization Bearer missing'); return $response->setJson(['status' => "Failure", 'error' => ['message'=>'Invalid Authorization header','code'=>401]], 401); } $token = str_replace('Bearer ', '', $authHeader); if (empty($token)) { $this->myLogger->log('error', 'Empty Token'); return $response->setJson(['status' => "Failure", 'error' => ['message'=>'Invalid Token Format','code'=> 401]], 401); } try{ $client_id = ClientTokenHelper::extractClientId($token); }catch(\Exception $e){ $this->myLogger->log('error', 'Invalid Client Token Format'); return $response->setJson(['status' => "Failure", 'error' => 'Invalid Token Format'], 401); } $client = $this->clientAPI->where('client_id', $client_id)->where("is_active", 1)->where("api_access", 1)->first(); // Client validation if (!$client) { $this->myLogger->log('error', 'Client Not Found or Unauthorized'); return $response->setJson(['status' => "Failure", 'error' => ['message' => 'Client not found or unauthorized','code'=>'403']], 403); } if (hash_equals($client['client_token'], $token)) { $this->myLogger->log('error', 'Access Granted For Client : '.$client_id); return true; } else { $this->myLogger->log('error', 'Invalid Token given for client : '.$client_id); return $response->setJson(['status' => "Failure", 'error' => ['message' => 'Invalid token','code'=>401] ], 401); } } catch (\Exception $e) { log_message('error', 'Error in ClientAPIController:validateToken - ' . $e->getMessage()); return $response->setJson(['status' => "Failure", 'error' => ['message'=>'Internal Server Error','code'=> 500]], 500); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // Do something here } }