<?php namespace api\components\User; use Emarref\Jwt\Claim\Subject; use Emarref\Jwt\Exception\InvalidSubjectException; use Emarref\Jwt\Token; use Emarref\Jwt\Verification\VerifierInterface; use yii\helpers\StringHelper; class SubjectPrefixVerifier implements VerifierInterface { private $subjectPrefix; public function __construct(string $subjectPrefix) { $this->subjectPrefix = $subjectPrefix; } public function verify(Token $token): void { /** @var Subject $subjectClaim */ $subjectClaim = $token->getPayload()->findClaimByName(Subject::NAME); $subject = ($subjectClaim === null) ? null : $subjectClaim->getValue(); if (!StringHelper::startsWith($subject, $this->subjectPrefix)) { throw new InvalidSubjectException; } } }