vova07 / yii2-start

Yii2-Start application
Other
273 stars 115 forks source link

url to backend #146

Closed des1roer closed 9 years ago

des1roer commented 9 years ago

думаю можно же по умолчанию сделать на главной ссылку на бэк

\yii2-start\vendor\vova07\yii2-start-themes\site\views\layouts\top-menu.php

        [
            'label' => Yii::t('vova07/themes/site', 'admin' ),
            'url' => ['/backend'],
            'visible' =>  (Yii::$app->user->identity->username == 'admin')
        ],

и на фронт

\yii2-start\vendor\vova07\yii2-start-themes\admin\views\layouts\main.php

        <!-- Header Navbar: style can be found in header.less -->
        <nav class="navbar navbar-static-top" role="navigation">
            <a class="navbar-btn sidebar-toggle"  href="/" title="app"><i class="fa fa-reply"></i> </a>
            <!-- Sidebar toggle button-->
            <a href="#" class="navbar-btn sidebar-toggle" data-toggle="offcanvas" role="button">
                <span class="sr-only"><?= Yii::t('vova07/themes/admin', 'Toggle navigation') ?></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </a>

только вот не могу понять как checkacces как в первом сделать. ну isAdmin желательно тож прикрутить. а еще вопрос по русификации - могу ли я в зависимости от языка в конфиге писать admin или админка?

des1roer commented 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;
}
vova07 commented 9 years ago

В 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 {
    // я обычный пользователь, и мне все равно какая у вас админка
}
des1roer commented 9 years ago

оу про can я и забыл. почему то подумал что он только на роли. спасибо. работает. а куда можно поглобальнее вынести эту проверку? чтобы можно было писать

        'visible' => isAdmin || isModer