diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bc99f0..c2389f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ v1.1 --------------------- * Role permission selector now have better UI with real trees. * Bugfix: Item name validation not allow '*'. +* Bugfix: Fatal error on creating Role/Permission with existed name. v1.0.1 --------------------- diff --git a/src/forms/PermissionForm.php b/src/forms/PermissionForm.php index 6a1f0c8..2592f0f 100755 --- a/src/forms/PermissionForm.php +++ b/src/forms/PermissionForm.php @@ -60,8 +60,12 @@ public function attributeHints() */ public function uniqueItemName($attribute, $params, $validator) { - $permission = Permission::getList(); - return ! isset($permission[$this->$attribute]); + $name = $this->$attribute; + if ($item = Permission::find($name)) { + $this->addError($attribute, 'Permission with the same name is already exists.'); + return false; + } + return true; } /** diff --git a/src/forms/RoleForm.php b/src/forms/RoleForm.php index 1797a25..6ae097b 100755 --- a/src/forms/RoleForm.php +++ b/src/forms/RoleForm.php @@ -80,8 +80,12 @@ public function attributeHints() */ public function uniqueItemName($attribute, $params, $validator) { - $permission = Role::getList(); - return ! isset($permission[$this->$attribute]); + $name = $this->$attribute; + if ($item = Role::find($name)) { + $this->addError($attribute, 'Role with the same name is already exists.'); + return false; + } + return true; } /** @@ -138,16 +142,18 @@ public function save() public function getInheritPermissions() { $herited = []; - foreach ($this->childRoles as $roleName) { - $permissions = Yii::$app->authManager->getPermissionsByRole($roleName); - $herited = array_merge( - $herited, - array_keys($permissions) - ); - } + if (!empty($this->childRoles)) { + foreach ($this->childRoles as $roleName) { + $permissions = Yii::$app->authManager->getPermissionsByRole($roleName); + $herited = array_merge( + $herited, + array_keys($permissions) + ); + } - $herited = array_unique($herited); - $herited = array_combine($herited, $herited); + $herited = array_unique($herited); + $herited = array_combine($herited, $herited); + } return $herited; } diff --git a/src/views/roles/_permissions.php b/src/views/roles/_permissions.php index 584626b..ffae51e 100644 --- a/src/views/roles/_permissions.php +++ b/src/views/roles/_permissions.php @@ -16,11 +16,13 @@ $this->registerJs('window.inheritPermissions = ' . Json::encode(array_values($inheritTree)), View::POS_BEGIN); ?>
-
-

Inherit Permissions

- -
-
+ scenario) : ?> +
+

Inherit Permissions

+ +
+
+

Allowed Permissions