|
- <?php
-
- use dokuwiki\Extension\RemotePlugin;
- use dokuwiki\Remote\AccessDeniedException;
-
- /**
- * Class remote_plugin_acl
- */
- class remote_plugin_acl extends RemotePlugin
- {
- /**
- * Get the list all ACL config entries
- *
- * @return array {Scope: ACL}, where ACL = dictionnary {user/group: permissions_int}
- * @throws AccessDeniedException
- */
- public function listAcls()
- {
- if (!auth_isadmin()) {
- throw new AccessDeniedException(
- 'You are not allowed to access ACLs, superuser permission is required',
- 114
- );
- }
- /** @var admin_plugin_acl $apa */
- $apa = plugin_load('admin', 'acl');
- $apa->initAclConfig();
- return $apa->acl;
- }
-
- /**
- * Add a new ACL rule to the config
- *
- * @param string $scope The page or namespace to apply the ACL to
- * @param string $user The user or group to apply the ACL to
- * @param int $level The permission level to set
- * @return bool If adding the ACL rule was successful
- * @throws AccessDeniedException
- */
- public function addAcl($scope, $user, $level)
- {
- if (!auth_isadmin()) {
- throw new AccessDeniedException(
- 'You are not allowed to access ACLs, superuser permission is required',
- 114
- );
- }
-
- /** @var admin_plugin_acl $apa */
- $apa = plugin_load('admin', 'acl');
- return $apa->addOrUpdateACL($scope, $user, $level);
- }
-
- /**
- * Remove an entry from ACL config
- *
- * @param string $scope The page or namespace the ACL applied to
- * @param string $user The user or group the ACL applied to
- * @return bool If removing the ACL rule was successful
- * @throws AccessDeniedException
- */
- public function delAcl($scope, $user)
- {
- if (!auth_isadmin()) {
- throw new AccessDeniedException(
- 'You are not allowed to access ACLs, superuser permission is required',
- 114
- );
- }
-
- /** @var admin_plugin_acl $apa */
- $apa = plugin_load('admin', 'acl');
- return $apa->deleteACL($scope, $user);
- }
- }
|