Command: validate permissions, require permission registration in advance of commands using them

this fixes #3200.
This causes permissions to be registered before plugin load, which changes some behaviour, but after discussions on #internals-dev we couldn't see any reason to keep the behaviour the way it was, and several reasons to change it to be something like this.
This commit is contained in:
Dylan K. Taylor
2020-07-08 13:50:38 +01:00
parent 6bca38999d
commit 92f6967665
3 changed files with 14 additions and 9 deletions

View File

@@ -99,6 +99,13 @@ abstract class Command{
}
public function setPermission(?string $permission) : void{
if($permission !== null){
foreach(explode(";", $permission) as $perm){
if(PermissionManager::getInstance()->getPermission($perm) === null){
throw new \InvalidArgumentException("Cannot use non-existing permission \"$perm\"");
}
}
}
$this->permission = $permission;
}