public function getActiveMenuIds()
 {
     if ($this->_active_menu_ids === null) {
         $user = Yii::$app->user->identity;
         $user_id = $user['id'];
         $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
         $role_ids = [];
         if (!empty($roles)) {
             foreach ($roles as $one) {
                 $role_ids[] = $one['role_id'];
             }
         }
         //var_dump($user);exit;
         $menu_ids = [];
         if (!empty($role_ids)) {
             $AdminRoleMenus = AdminRoleMenu::find()->asArray()->select(['menu_id'])->where(['in', 'role_id', $role_ids])->all();
             if (!empty($AdminRoleMenus)) {
                 foreach ($AdminRoleMenus as $menu) {
                     $menu_ids[] = $menu['menu_id'];
                 }
             }
         }
         $menu_ids = array_unique($menu_ids);
         $this->_active_menu_ids = $menu_ids;
     }
     return $this->_active_menu_ids;
 }
Example #2
0
 public static function ifCurrentUserIsSpecificRole($role_name)
 {
     if (!$role_name) {
         return false;
     }
     $user = Yii::$app->user->identity;
     $user_id = $user['id'];
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $role_ids = [];
     if (!empty($roles)) {
         foreach ($roles as $role) {
             $role_ids[] = $role['role_id'];
         }
     }
     $user_role_names = [];
     $user_roles = AdminRole::find()->asArray()->where(['in', 'role_id', $role_ids])->all();
     if (!empty($user_roles)) {
         foreach ($user_roles as $one) {
             $user_role_names[] = $one['role_name'];
         }
     }
     if (in_array($role_name, $user_role_names)) {
         return true;
     }
     return false;
 }
 public function getCurrentRoleKeys()
 {
     $identity = Yii::$app->user->identity;
     $user_id = $identity->id;
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $AdminRole = new AdminRole();
     # 缓存读取role key
     if (!CCache::get(CCache::ALL_ROLE_KEY_CACHE_HANDLE)) {
         if (!CCache::set(CCache::ALL_ROLE_KEY_CACHE_HANDLE, $AdminRole->getAllRoleMenuRoleKey())) {
             throw new InvalidValueException('save role key to cache error,check your cache if it can write!');
         }
     }
     $roleKeys = CCache::get(CCache::ALL_ROLE_KEY_CACHE_HANDLE);
     //var_dump($roleKeys);exit;
     //$role_ids = [];
     $menu_roles = [];
     if (!empty($roles)) {
         foreach ($roles as $role) {
             $role_id = $role['role_id'];
             $menu_role = isset($roleKeys[$role_id]) ? $roleKeys[$role_id] : [];
             $menu_roles = array_merge($menu_roles, $menu_role);
         }
     }
     return $menu_roles;
 }
 public function getUserRoleIds()
 {
     $user = $this->_one;
     $user_id = $user['id'];
     $roles = AdminUserRole::find()->asArray()->where(['user_id' => $user_id])->all();
     $role_ids = [];
     if (!empty($roles)) {
         foreach ($roles as $r) {
             $role_ids[] = $r['role_id'];
         }
     }
     return $role_ids;
 }