* @since 1.0 */ class AuthItem extends Model { const TYPE_ROUTE = 101; public $name; public $type; public $description; public $ruleName; public $data; /** * @inheritdoc */ public function rules() { return [ [['name', 'ruleName', 'description'], 'safe'], [['type'], 'integer'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'name' => Yii::t('rbac-admin', 'Name'), 'item_name' => Yii::t('rbac-admin', 'Name'), 'type' => Yii::t('rbac-admin', 'Type'), 'description' => Yii::t('rbac-admin', 'Description'), 'ruleName' => Yii::t('rbac-admin', 'Rule Name'), 'data' => Yii::t('rbac-admin', 'Data'), ]; } /** * Search authitem * @param array $params * @return \yii\data\ActiveDataProvider|\yii\data\ArrayDataProvider */ public function search($params) { /* @var \yii\rbac\Manager $authManager */ $authManager = Configs::authManager(); if ($this->type == Item::TYPE_ROLE) { $items = $authManager->getRoles(); } else { $items = array_filter($authManager->getPermissions(), function($item) { return $this->type == Item::TYPE_PERMISSION xor strncmp($item->name, '/', 1) === 0; }); } $this->load($params); if ($this->validate()) { $search = mb_strtolower(trim($this->name)); $desc = mb_strtolower(trim($this->description)); $ruleName = $this->ruleName; foreach ($items as $name => $item) { $f = (empty($search) || mb_strpos(mb_strtolower($item->name), $search) !== false) && (empty($desc) || mb_strpos(mb_strtolower($item->description), $desc) !== false) && (empty($ruleName) || $item->ruleName == $ruleName); if (!$f) { unset($items[$name]); } } } return new ArrayDataProvider([ 'allModels' => $items, ]); } }