Drop nested permissions support in plugin.yml

This commit is contained in:
Dylan K. Taylor 2020-12-11 19:03:52 +00:00
parent dd58a95ae5
commit bee770ebf5

View File

@ -23,9 +23,7 @@ declare(strict_types=1);
namespace pocketmine\permission; namespace pocketmine\permission;
use function is_array;
use function is_bool; use function is_bool;
use function is_string;
use function strtolower; use function strtolower;
class PermissionParser{ class PermissionParser{
@ -101,31 +99,18 @@ class PermissionParser{
*/ */
public static function loadPermission(string $name, array $data, string $default = self::DEFAULT_FALSE, array &$output = []) : void{ public static function loadPermission(string $name, array $data, string $default = self::DEFAULT_FALSE, array &$output = []) : void{
$desc = null; $desc = null;
$children = [];
if(isset($data["default"])){ if(isset($data["default"])){
$default = PermissionParser::defaultFromString($data["default"]); $default = PermissionParser::defaultFromString($data["default"]);
} }
if(isset($data["children"])){ if(isset($data["children"])){
if(is_array($data["children"])){ throw new \InvalidArgumentException("Nested permission declarations are no longer supported. Declare each permission separately.");
foreach($data["children"] as $k => $v){
if(!is_string($k)){
throw new \InvalidArgumentException("Permission name should be string");
}
if(is_array($v)){
self::loadPermission($k, $v, $default, $output);
}
$children[$k] = true;
}
}else{
throw new \InvalidStateException("'children' key is of wrong type");
}
} }
if(isset($data["description"])){ if(isset($data["description"])){
$desc = $data["description"]; $desc = $data["description"];
} }
$output[$default][] = new Permission($name, $desc, $children); $output[$default][] = new Permission($name, $desc);
} }
} }