/**
  * 绑定角色与权限的对应关系
  * @param $roleId   角色ID
  * @param $pids 权限ID列表
  * @param $loginUser \liuxy\admin\models\AdminUser
  */
 public static function bind($roleId, $pids, $loginUser)
 {
     self::deteteAll(['role_id' => $roleId]);
     if (!empty($pids)) {
         $pids = explode(',', $pids);
         $pids = array_unique($pids);
         foreach ($pids as $pid) {
             if (!empty($pid)) {
                 $item = new RolePermission();
                 $item->isNewRecord = true;
                 $item->role_id = $roleId;
                 $item->permission_id = $pid;
                 $item->insert_by = $loginUser->username;
                 $item->insert();
                 if ($item->hasErrors()) {
                     Yii::error(VarDumper::dumpAsString($item->getErrors()), __METHOD__);
                 }
                 unset($item);
             }
         }
         /**
          * 清理角色下所对应用户的权限
          */
         foreach (AdminUserRole::find()->where(['role_id' => $roleId])->all() as $userRole) {
             AdminUser::clearPermission($userRole['user_id']);
         }
     }
 }
 /**
  * 注销
  */
 public function actionLogout()
 {
     AdminUser::setLogout();
     if ($this->request->getIsAjax()) {
         $this->setResponseData('data', Url::toRoute('login'));
     } else {
         $this->redirect(Url::toRoute('login'));
     }
 }
 /**
  * @param \yii\base\Action $action
  * @param mixed $result
  * @return mixed|void
  * @throws \yii\db\Exception
  */
 public function afterAction($action, $result)
 {
     /**
      * 设置导航
      */
     if (($this->format == '' || $this->format == 'html') && !$this->request->getIsAjax()) {
         if ($action->id !== 'login') {
             $myPermission = AdminUser::getPermission($this->user->id);
             $this->setResponseData('topMenu', $this->getTopMenu($myPermission));
             $path = $action->controller->route;
             if (!empty($path) && $path != \Yii::$app->defaultRoute && $path != \Yii::$app->errorHandler->errorAction) {
                 /**
                  * @var $perm \liuxy\admin\models\Permission
                  */
                 $perm = Permission::find()->where(['link' => $path])->one();
                 if ($perm) {
                     $this->setResponseData('current', $perm);
                     /**
                      * @var $top \liuxy\admin\models\Permission
                      */
                     $top = Permission::findTop($perm);
                     $this->setResponseData('topItem', $top);
                     $this->setResponseData('subMenu', $this->getSubMenu($top->id, $myPermission));
                 } else {
                     $this->setDefaultMenu();
                 }
             } else {
                 $this->setDefaultMenu();
             }
         }
     }
     return parent::afterAction($action, $result);
 }
<?php

use liuxy\admin\Module;
use yii\helpers\Url;
$currentUser = \liuxy\admin\models\AdminUser::getUser();
?>
<!-- BEGIN HEADER -->
<div class="page-header navbar navbar-fixed-top">
    <!-- BEGIN HEADER INNER -->
    <div class="page-header-inner">
        <!-- BEGIN LOGO -->
        <div class="page-logo">
            <a href="index.html">
                <img src="<?php 
echo Yii::$app->assetManager->getPublishedUrl('@liuxy/themes/admin');
?>
/img/logo.png" alt="logo" class="logo-default"/>
            </a>
            <div class="menu-toggler sidebar-toggler">
                <!-- DOC: Remove the above "hide" to enable the sidebar toggler button on header -->
            </div>
        </div>
        <!-- END LOGO -->
        <div class="hor-menu hor-menu-light hidden-sm hidden-xs">
        <ul class="nav navbar-nav">
            <?php 
if ($menus) {
    foreach ($menus as $menu) {
        if ($menu['is_nav'] != \liuxy\admin\models\Permission::NAV_YES) {
            continue;
        }
 /**
  * 获取管理员信息
  */
 public function actionGet()
 {
     $id = $this->get('id', 0);
     $user = AdminUser::findByCache($id);
     if ($user) {
         $roles = AdminUserRole::findAllArray(['user_id' => $id]);
         if ($roles) {
             $user['roles'] = $roles;
         }
         $this->setResponseData('data', $user);
     } else {
         $this->setError(Module::t('error.user.notexists'));
     }
 }
 /**
  * 清理用户缓存
  * @param $permissionId
  */
 public static function clearUserPermission($permissionId)
 {
     $roles = [];
     foreach (RolePermission::find()->where(['permission_id' => $permissionId])->all() as $rolePerm) {
         $roles[] = $rolePerm['role_id'];
     }
     foreach (AdminUserRole::find()->where(['role_id' => $roles])->all() as $userRole) {
         AdminUser::clearPermission($userRole['user_id']);
     }
 }