Closed des1roer closed 9 years ago
роль так корректно проверять? и куда это желательно выносить?
$userId = \Yii::$app->user->identity->id;
$roles = array_keys(Yii::$app->authManager->getRolesByUser($userId));
$rule = array('superadmin','admin');
$isAdmin = FALSE;
foreach ($rule as $key) {
if (in_array($key, $roles))
$isAdmin = TRUE;
}
В Yii
есть возможность сразу проверять права пользователя, по этому лучше ваш код переделать в что-то похожее на это:
$user = \Yii::$app->user;
$isAdmin = $user->can('superadmin') || $user->can('admin'); // true если юзер является админом
// если роль "superadmin" наследуется от "admin" то для проверки будет достаточно только одно условия
// $isAdmin = $user->can('admin'); # true если пользователь имеет права админа
// Дальше просто используйте $isAdmin
if (true === $isAdmin) {
// я админ, покажите мне что-то особенное
} else {
// я обычный пользователь, и мне все равно какая у вас админка
}
оу про can я и забыл. почему то подумал что он только на роли. спасибо. работает. а куда можно поглобальнее вынести эту проверку? чтобы можно было писать
'visible' => isAdmin || isModer
думаю можно же по умолчанию сделать на главной ссылку на бэк
\yii2-start\vendor\vova07\yii2-start-themes\site\views\layouts\top-menu.php
и на фронт
\yii2-start\vendor\vova07\yii2-start-themes\admin\views\layouts\main.php
только вот не могу понять как checkacces как в первом сделать. ну isAdmin желательно тож прикрутить. а еще вопрос по русификации - могу ли я в зависимости от языка в конфиге писать admin или админка?