$iat, "exp" => $exp, ]; if ($data !== null) { $request_data = array_merge($request_data, (array)$data); } try{ $token = JWT::encode($request_data ,$secret_Key,'HS512'); return $token; // return ['status' => true,'token' => $token]; } catch (Exception $e) { return ['status' => false,'message' => $e->getMessage()]; } } public static function validateJWT($jwt) { $jwtParts = explode(' ', $jwt); // print_r($jwtParts); if (count($jwtParts) != 2 || $jwtParts[0] == 'Bearer') { return false; } $token = $jwtParts[1]; try { $decoded = JWT::decode($token, new Key("secret", 'HS512')); return json_encode(['status' => true, 'message' => 'Token is valid', 'decoded' => (array) $decoded]); } catch (ExpiredException $e) { return json_encode(['status' => false, 'message' => 'Token has expired']); } catch (BeforeValidException $e) { return json_encode(['status' => false, 'message' => 'Token is not yet valid']); } catch (SignatureInvalidException $e) { return json_encode(['status' => false, 'message' => 'Token signature is invalid']); } catch (\Exception $e) { return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']); } } public static function getIdFromToken($jwt) { $jwtParts = explode(' ', $jwt); $token = $jwtParts[0]; try { $decoded = JWT::decode($token, new Key("secret", 'HS512')); return json_encode(['status' => true, 'message' => 'Token is valid', 'data' =>$decoded->data->id ]); } catch (ExpiredException $e) { return json_encode(['status' => false, 'message' => 'Token has expired']); } catch (BeforeValidException $e) { return json_encode(['status' => false, 'message' => 'Token is not yet valid']); } catch (SignatureInvalidException $e) { return json_encode(['status' => false, 'message' => 'Token signature is invalid']); } catch (\Exception $e) { return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']); } } public static function getUserIdFromToken() { $request = \Config\Services::request(); $jwt = $request->getHeader('Authorization'); $jwtParts = explode(' ', $jwt); $token = $jwtParts[1]; $decoded = JWT::decode($token, new Key("secret", 'HS512')); return $decoded->id; } public static function getUserRoleFromToken() { $request = \Config\Services::request(); $jwt = $request->getHeader('Authorization'); $jwtParts = explode(' ', $jwt); $token = $jwtParts[1]; $decoded = JWT::decode($token, new Key("secret", 'HS512')); return $decoded->role; } public static function decodeToken() { $request = \Config\Services::request(); $jwt = $request->getHeader('Authorization'); $jwtParts = explode(' ', $jwt); $token = $jwtParts[1]; $decoded = JWT::decode($token, new Key("secret", 'HS512')); return $decoded; } }