mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Все действия, связанные с аккаунтами, теперь вызываются через 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;
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |