mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Объединены сущности для авторизации посредством JWT токенов и токенов, выданных через oAuth2.
Все действия, связанные с аккаунтами, теперь вызываются через url `/api/v1/accounts/<id>/<action>`. Добавлена вменяемая система разграничения прав на основе RBAC. Теперь oAuth2 токены генерируются как случайная строка в 40 символов длинной, а не UUID. Исправлен баг с неправильным временем жизни токена в ответе успешного запроса аутентификации. Теперь все unit тесты можно успешно прогнать без наличия интернета.
This commit is contained in:
		
							
								
								
									
										28
									
								
								api/components/User/SubjectPrefixVerifier.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								api/components/User/SubjectPrefixVerifier.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<?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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user