public function behaviors() { return ['access' => ['class' => \yii\filters\AccessControl::className(), 'only' => ['index', 'view', 'create', 'update', 'delete'], 'rules' => [['actions' => ['index', 'view'], 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return PermissionHelpers::requireMinimumRole('Admin') && PermissionHelpers::requireStatus('Active'); }], ['actions' => ['update', 'delete'], 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return PermissionHelpers::requireMinimumRole('SuperUser') && PermissionHelpers::requireStatus('Active'); }]]], 'verbs' => ['class' => VerbFilter::className(), 'actions' => ['delete' => ['post']]]]; }
public function loginAdmin() { if ($this->validate() && PermissionHelpers::requireMinimumRole('Admin', $this->getUser()->id)) { return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); } else { throw new NotFoundHttpException('You Shall Not Pass.'); } }
<?php use yii\helpers\Html; use yii\widgets\DetailView; use common\models\PermissionHelpers; /* @var $this yii\web\View */ /* @var $model common\models\user */ $this->title = $model->username; $show_this_nav = PermissionHelpers::requireMinimumRole('SuperUser'); $this->params['breadcrumbs'][] = ['label' => 'Users', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> <div class="user-view"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php if (!Yii::$app->user->isGuest && $show_this_nav) { echo Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']); } ?> <?php if (!Yii::$app->user->isGuest && $show_this_nav) { echo Html::a('Delete', ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), 'method' => 'post']]); }
/** * @inheritdoc */ public function behaviors() { return ['access' => ['class' => AccessControl::className(), 'rules' => [['actions' => ['login', 'error'], 'allow' => true], ['actions' => ['index'], 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return PermissionHelpers::requireMinimumRole('Admin') && PermissionHelpers::requireStatus('Active'); }], ['actions' => ['logout'], 'allow' => true, 'roles' => ['@']]]], 'verbs' => ['class' => VerbFilter::className(), 'actions' => ['logout' => ['get', 'post']]]]; }
<title><?php echo Html::encode($this->title); ?> </title> <?php $this->head(); ?> </head> <body> <?php $this->beginBody(); ?> <div class="wrap"> <?php if (!Yii::$app->user->isGuest) { $is_admin = PermissionHelpers::requireMinimumRole('Admin'); NavBar::begin(['brandLabel' => 'Yii 2 Build <i class="fa fa-plug"></i> Admin', 'brandUrl' => Yii::$app->homeUrl, 'options' => ['class' => 'navbar-inverse navbar-fixed-top']]); } else { NavBar::begin(['brandLabel' => 'Yii 2 Build <i class="fa fa-plug"></i>', 'brandUrl' => Yii::$app->homeUrl, 'options' => ['class' => 'navbar-inverse navbar-fixed-top']]); $menuItems = [['label' => 'Home', 'url' => ['site/index']]]; } if (!Yii::$app->user->isGuest && $is_admin) { $menuItems[] = ['label' => 'Users', 'url' => ['user/index']]; $menuItems[] = ['label' => 'Profiles', 'url' => ['profile/index']]; $menuItems[] = ['label' => 'Roles', 'url' => ['role/index']]; $menuItems[] = ['label' => 'User Types', 'url' => ['user-type/index']]; $menuItems[] = ['label' => 'Statuses', 'url' => ['status/index']]; } if (Yii::$app->user->isGuest) { $menuItems[] = ['label' => 'Login', 'url' => ['site/login']]; } else {
<?php $this->head(); ?> </head> <body> <?php $this->beginBody(); ?> <div class="wrap"> <?php if (!Yii::$app->user->isGuest) { $is_admin = PermissionHelpers::requireMinimumRole('SuperUser'); NavBar::begin(['brandLabel' => 'НПЦАП АДМИНКА <i class="fa fa-plug"></i> Админ', 'brandUrl' => Yii::$app->homeUrl, 'options' => ['class' => 'navbar-inverse navbar-fixed-top']]); } else { NavBar::begin(['brandLabel' => 'НПЦАП <i class="fa fa-plug"></i>', 'brandUrl' => Yii::$app->homeUrl, 'options' => ['class' => 'navbar-inverse navbar-fixed-top']]); } if (Yii::$app->user->isGuest) { $menuItemsLogOut[] = ['label' => 'Войти', 'url' => ['site/login']]; } else { $menuItemsLogOut[] = ['label' => 'Выйти (' . Yii::$app->user->identity->username . ')', 'url' => ['/site/logout'], 'linkOptions' => ['data-method' => 'post']]; } echo Nav::widget(['options' => ['class' => 'navbar-nav navbar-right'], 'items' => $menuItemsLogOut]); if (!Yii::$app->user->isGuest && $is_admin) { echo Nav::widget(['options' => ['class' => 'navbar-nav navbar-right'], 'items' => [['label' => 'Пользователи', 'items' => [['label' => 'Пользователи', 'url' => ['user/index']], ['label' => 'Профили', 'url' => ['profile/index']]]], ['label' => 'Поддержка', 'items' => [['label' => 'Запрос в поддержку', 'url' => ['content/index']], ['label' => 'Найстройка автоответчика', 'url' => ['status-message/index']], ['label' => 'ЧАВО', 'url' => ['faq/index']], ['label' => 'ЧАВО Категории', 'url' => ['faq-category/index']]]], ['label' => 'Контроль доступа', 'items' => [['label' => 'Роли', 'url' => ['role/index']], ['label' => 'Типы пользователей', 'url' => ['user-type/index']], ['label' => 'Статусы', 'url' => ['status/index']]]], ['label' => 'Контент', 'items' => [['label' => 'Контент', 'url' => ['content/index']], ['label' => 'Автоответчик', 'url' => ['status-message/index']], ['label' => 'ЧАВО', 'url' => ['faq/index']], ['label' => 'Категории ЧАВО', 'url' => ['faq-category/index']], ['label' => 'Дракон-Тест', 'url' => ['drakon/index']]]]]]); } $menuItems = [['label' => 'Главная', 'url' => ['site/index']]]; echo Nav::widget(['options' => ['class' => 'navbar-nav navbar-right'], 'items' => $menuItems]);