MDL-69231 tests: Add role capability setting generator

This commit is contained in:
Andrew Nicols
2023-06-02 12:39:52 +08:00
committed by Simey Lameze
parent 521e21d842
commit 091aa9b872
5 changed files with 107 additions and 14 deletions
+42
View File
@@ -860,6 +860,48 @@ EOD;
return $newroleid;
}
/**
* Set role capabilities for the specified role.
*
* @param int $roleid The Role to set capabilities for
* @param array $rolecapabilities The list of capability =>permission to set for this role
* @param context $context The context to apply this capability to
*/
public function create_role_capability(int $roleid, array $rolecapabilities, context $context = null): void {
// Map the capabilities into human-readable names.
$allpermissions = [
'inherit' => CAP_INHERIT,
'allow' => CAP_ALLOW,
'prevent' => CAP_PREVENT,
'prohibit' => CAP_PROHIBIT,
];
// Fetch all capabilities to check that they exist.
$allcapabilities = get_all_capabilities();
foreach ($rolecapabilities as $capability => $permission) {
if ($permission === '') {
// Allow items to be skipped.
continue;
}
if (!array_key_exists($capability, $allcapabilities)) {
throw new \coding_exception("Unknown capability '{$capability}'");
}
if (!array_key_exists($permission, $allpermissions)) {
throw new \coding_exception("Unknown capability permissions '{$permission}'");
}
assign_capability(
$capability,
$allpermissions[$permission],
$roleid,
$context->id,
true
);
}
}
/**
* Create a tag.
*