/var/www/vhosts/nabawater/common/helpers
NameSizeModeActions
AccessRules.php120510644editdlrm
AuthHandler.php75560644editdlrm
Aws.php57620644editdlrm
ChunkHelper.php9590644editdlrm
Com.php224100644editdlrm
DateTimeHelper.php71550644editdlrm
FBHelper.php41120644editdlrm
FileUploadHelper.php43510644editdlrm
GeoHelper.php125350644editdlrm
GeoMetricHelper.php55140644editdlrm
IPay88Helper.php46420644editdlrm
JwtHelper.php36730644editdlrm
Mailer.php45350644editdlrm
MailerQueueHelper.php31710644editdlrm
ModelHelper.php25530644editdlrm
OneSignal.php73770644editdlrm
PaymentHelper.php57840644editdlrm
QrHelper.php24560644editdlrm
RabbitMQHelper.php24060644editdlrm
SmsGateway.php18620644editdlrm
StripeHelper.php33350644editdlrm
UploadHelper.php161640644editdlrm
Edit: /var/www/vhosts/nabawater/common/helpers/JwtHelper.php (3673B)
*/ class JwtHelper { /** * */ const CLAIM_ISSUER = API_HOST; /** * */ const CLAIM_VALID_FROM = 0; # In seconds /** * */ const CLAIM_EXPIRATION = 31536000; # In seconds / 24 Hours /** * */ const CLAIM_JWT_ID = '61B8A33A25DBAKVJ'; /** * */ const SIGNATURE_KEY = 'MYNkaZaz3r3rkIGOv77h9gff0aDJDKVJ'; /** * */ const PRIVATE_CLAIM_ID = 'token'; /** * @var */ private $signature; /** * @var */ private static $instance; /** * Jwt constructor. */ private function __construct() { $this->signature = new Sha256(); } /** * @return JwtHelper */ public static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } /** * @param $id * @return string * @throws \BadMethodCallException */ public function token($id) { $token = (new Builder()) ->setIssuer(self::CLAIM_ISSUER) ->setAudience(self::CLAIM_ISSUER) ->setId(self::CLAIM_JWT_ID, true) ->setIssuedAt(time()) ->setNotBefore(time() + self::CLAIM_VALID_FROM) ->setExpiration(time() + self::CLAIM_EXPIRATION) ->set(self::PRIVATE_CLAIM_ID, $id) ->sign($this->signature, self::SIGNATURE_KEY); return (string) $token->getToken(); } /** * @param $token * @return bool * @throws \BadMethodCallException */ public function isValid($token) { if (!is_string($token)) { $token = (string) $token; } $validator = new ValidationData(); $validator->setIssuer(self::CLAIM_ISSUER); $validator->setAudience(self::CLAIM_ISSUER); $validator->setId(self::CLAIM_JWT_ID); try { $parsedToken = (new Parser())->parse((string) $token); // Debug logging error_log("JWT Validation Debug:"); error_log("Expected Issuer (API_HOST): " . self::CLAIM_ISSUER); error_log("Token Issuer: " . $parsedToken->getClaim('iss', 'NOT SET')); error_log("Token Audience: " . $parsedToken->getClaim('aud', 'NOT SET')); error_log("Validation result: " . ($parsedToken->validate($validator) ? 'true' : 'false')); error_log("Signature verify: " . ($parsedToken->verify($this->signature, self::SIGNATURE_KEY) ? 'true' : 'false')); return $parsedToken->validate($validator) && $parsedToken->verify($this->signature, self::SIGNATURE_KEY); } catch (Exception $runtimeException) { error_log("JWT Exception: " . $runtimeException->getMessage()); return false; } } /** * @param $token * @return string|null * @throws \BadMethodCallException * @throws \OutOfBoundsException */ public function getPrivateClaim($token) { if (!$this->isValid($token)) { return null; } try { $token = (new Parser())->parse((string) $token); return $token->getClaim(self::PRIVATE_CLAIM_ID); } catch (Exception $exception) { return null; } } }