| 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',		];	}		}
 |