| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 
							- <?php
 
- /**
 
-  * FecShop file.
 
-  *
 
-  * @link http://www.fecshop.com/
 
-  * @copyright Copyright (c) 2016 FecShop Software LLC
 
-  * @license http://www.fecshop.com/license/
 
-  */
 
- namespace fecadmin\models;
 
- use Yii;
 
- use yii\db\ActiveRecord;
 
- use fec\helpers\CUrl;
 
- /**
 
-  * @author Terry Zhao <2358269014@qq.com>
 
-  * @since 1.0
 
-  */
 
- class AdminRole extends ActiveRecord
 
- {
 
-     private $_admin_menu;
 
- 	private $_admin_menu_tree_arr;
 
- 	public  $_ajaxMenuEditUrl;
 
- 	
 
- 	
 
- 	
 
-     public static function tableName()
 
-     {
 
-         return '{{%admin_role}}';
 
-     }
 
- 	
 
- 	public function rules()
 
-     {
 
- 		$current_rules = [
 
- 			['role_name', 'required'],
 
- 			['role_description', 'required'],
 
- 			['role_name', 'validateRoleName'],
 
- 		];
 
- 		return $current_rules;
 
-     }
 
- 	# AdminRole::getAdminRoleArr()
 
- 	public static function getAdminRoleArr(){
 
- 		$roles_arr = []; 
 
- 		$allRoles = self::find()->asArray()->all();
 
- 		if(is_array($allRoles) && !empty($allRoles)){
 
- 			foreach($allRoles as $role){
 
- 				$roles_arr[$role['role_id']] = $role['role_name'];
 
- 			}
 
- 		}
 
- 		return $roles_arr;
 
- 	}
 
- 	
 
- 	
 
- 	
 
- 	# 验证权限名字。是否存在重复
 
- 	public function validateRoleName($attribute,$params){
 
- 		if($role_name = $this->role_name){
 
- 			if($role_id = $this->role_id){
 
- 				$one = AdminRole::find()->where(" role_id != :role_id AND role_name = :role_name ",[':role_id'=>$role_id,':role_name'=>$role_name])->one();
 
- 			}else{
 
- 				$one = AdminRole::find()->where(" role_name = :role_name ",[':role_name'=>$role_name])->one();
 
- 			}
 
- 			if($one->role_name){
 
- 				$this->addError($attribute,"this role name is exist!");
 
- 			}
 
- 			
 
- 			if(!is_numeric($order)){
 
- 				
 
- 			}
 
- 		}
 
- 	}
 
- 	
 
- 	public function getAllRoleIds(){
 
- 		$data = AdminRole::find()->asArray()->select(['role_id'])->all();
 
- 		$role_ids = [];
 
- 		if(!empty($data)){
 
- 			foreach($data as $d){
 
- 				$role_ids[] = $d['role_id'];
 
- 			}
 
- 		}
 
- 		return $role_ids;
 
- 	}
 
- 	# 此处需要 redis_cache 缓存 redis  cache
 
- 	# 得到所有的role_id 对应的允许访问的role_key(menu 中的)
 
- 	public function getAllRoleMenuRoleKey(){
 
- 		$secuityUrlKey = $this->secuityUrlKey();
 
- 		$role_ids = $this->getAllRoleIds();
 
- 		//var_dump($role_ids);
 
- 		$role_menu_keys = [];
 
- 		if(!empty($role_ids)){
 
- 			foreach($role_ids as $role_id){
 
- 				$d_menu_ids = AdminRoleMenu::find()
 
- 						->asArray()
 
- 						->select(['menu_id'])
 
- 						->where(['role_id' => $role_id])
 
- 						->all();
 
- 				$role_keys = [];
 
- 				$menu_ids = [];
 
- 				if(!empty($d_menu_ids)){
 
- 					foreach($d_menu_ids as $d){
 
- 						$menu_ids[] = $d['menu_id'];
 
- 					}
 
- 				}
 
- 				if($menu_ids){
 
- 					$menus = AdminMenu::find()->asArray()
 
- 							->where(['in','id',$menu_ids])
 
- 							->all();
 
- 					//	var_dump(['in','id',$menu_ids]);
 
- 					if(!empty($menus)){
 
- 						foreach($menus as $menu){
 
- 							$role_keys[] = $menu['role_key'];
 
- 						}
 
- 						$role_menu_key[$role_id] = array_merge($role_keys,$secuityUrlKey);
 
- 					}
 
- 					
 
- 				}else{
 
- 					$role_menu_key[$role_id] = $secuityUrlKey;
 
- 				}
 
- 			}
 
- 		}
 
- 		return $role_menu_key;
 
- 	}
 
- 	
 
- 	# 非权限验证的url key
 
- 	public function secuityUrlKey(){
 
- 		return [
 
- 			//'/fecadmin/login',
 
- 			//'/fecadmin/logout',
 
- 		];
 
- 	}
 
- 	
 
- 	
 
- }
 
 
  |