mirror of
https://github.com/elyby/accounts.git
synced 2024-11-10 07:22:00 +05:30
dd2c4bc413
Все действия, связанные с аккаунтами, теперь вызываются через url `/api/v1/accounts/<id>/<action>`. Добавлена вменяемая система разграничения прав на основе RBAC. Теперь oAuth2 токены генерируются как случайная строка в 40 символов длинной, а не UUID. Исправлен баг с неправильным временем жизни токена в ответе успешного запроса аутентификации. Теперь все unit тесты можно успешно прогнать без наличия интернета.
32 lines
1.2 KiB
PHP
32 lines
1.2 KiB
PHP
<?php
|
||
namespace common\rbac;
|
||
|
||
use Yii;
|
||
use yii\rbac\PhpManager;
|
||
|
||
class Manager extends PhpManager {
|
||
|
||
/**
|
||
* В нашем приложении права выдаются не пользователям, а токенам, так что ожидаем
|
||
* здесь $accessToken и извлекаем из него все присвоенные права.
|
||
*
|
||
* По каким-то причинам, в Yii механизм рекурсивной проверки прав требует, чтобы
|
||
* массив с правами был проиндексирован по ключам этих самых прав, так что в
|
||
* конце выворачиваем массив наизнанку.
|
||
*
|
||
* @param string $accessToken
|
||
* @return string[]
|
||
*/
|
||
public function getAssignments($accessToken): array {
|
||
$identity = Yii::$app->user->findIdentityByAccessToken($accessToken);
|
||
/** @noinspection NullPointerExceptionInspection */
|
||
$permissions = $identity->getAssignedPermissions();
|
||
if (empty($permissions)) {
|
||
return [];
|
||
}
|
||
|
||
return array_flip($permissions);
|
||
}
|
||
|
||
}
|