mirror of
https://github.com/elyby/accounts.git
synced 2024-11-15 09:48:42 +05:30
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);
|
|||
|
}
|
|||
|
|
|||
|
}
|