mirror of
https://github.com/elyby/accounts.git
synced 2024-11-09 23:12:20 +05:30
dd2c4bc413
Все действия, связанные с аккаунтами, теперь вызываются через url `/api/v1/accounts/<id>/<action>`. Добавлена вменяемая система разграничения прав на основе RBAC. Теперь oAuth2 токены генерируются как случайная строка в 40 символов длинной, а не UUID. Исправлен баг с неправильным временем жизни токена в ответе успешного запроса аутентификации. Теперь все unit тесты можно успешно прогнать без наличия интернета.
29 lines
811 B
PHP
29 lines
811 B
PHP
<?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;
|
|
}
|
|
}
|
|
|
|
}
|