diff --git a/appinfo/info.xml b/appinfo/info.xml index a345a6aea..043772dea 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -20,7 +20,8 @@ https://www.arawa.fr/contact/ - + + Create Groupfolders with delegated management diff --git a/lib/Controller/ConnectedGroupController.php b/lib/Controller/ConnectedGroupController.php index 6647a0ed7..08cca5403 100644 --- a/lib/Controller/ConnectedGroupController.php +++ b/lib/Controller/ConnectedGroupController.php @@ -14,6 +14,7 @@ use OCA\Workspace\Space\SpaceManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; @@ -40,12 +41,12 @@ public function __construct( * * Add a group connected to a workspace/groupfolder. * - * @NoAdminRequired * @SpaceAdminRequired * * @param int $spaceId * @param string $gid */ + #[NoAdminRequired] public function addGroup(int $spaceId, string $gid): JSONResponse { if (!$this->groupManager->groupExists($gid)) { @@ -121,9 +122,9 @@ public function addGroup(int $spaceId, string $gid): JSONResponse { /** * Remove a group connected to a workspace/groupfolder. * - * @NoAdminRequired * @SpaceAdminRequired */ + #[NoAdminRequired] public function removeGroup(int $spaceId, string $gid) { if (!$this->groupManager->groupExists($gid)) { $message = sprintf('The group %s does not exist', $gid); diff --git a/lib/Controller/FileCSVController.php b/lib/Controller/FileCSVController.php index 5ed33fbe6..3990ec15a 100644 --- a/lib/Controller/FileCSVController.php +++ b/lib/Controller/FileCSVController.php @@ -49,6 +49,7 @@ use OCA\Workspace\Users\UsersExistCheck; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\JSONResponse; use OCP\Files\IRootFolder; use OCP\IL10N; @@ -282,11 +283,11 @@ public function import(?int $spaceId = null): JSONResponse { } /** - * @NoAdminRequired * @SpaceAdminRequired * Returns formatted list of existing users of the instance. * */ + #[NoAdminRequired] public function getFromFiles(?int $spaceId = null):JSONResponse { try { $params = $this->request->getParams(); diff --git a/lib/Controller/GroupController.php b/lib/Controller/GroupController.php index b06b78040..4e31426fc 100644 --- a/lib/Controller/GroupController.php +++ b/lib/Controller/GroupController.php @@ -40,6 +40,7 @@ use OCA\Workspace\Space\SpaceManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\JSONResponse; use OCP\Collaboration\Collaborators\ISearch; use OCP\IGroupManager; @@ -70,7 +71,6 @@ public function __construct( } /** - * @NoAdminRequired * @SpaceAdminRequired * * Creates a group @@ -83,6 +83,7 @@ public function __construct( * @var string $spaceId for Middleware * */ + #[NoAdminRequired] public function create(array $data = []): JSONResponse { $data = array_merge(self::DEFAULT, $data); @@ -113,7 +114,6 @@ public function create(array $data = []): JSONResponse { } /** - * @NoAdminRequired * @SpaceAdminRequired * * Deletes a group @@ -123,6 +123,7 @@ public function create(array $data = []): JSONResponse { * @var int $spaceId * */ + #[NoAdminRequired] public function delete(string $gid, int $spaceId): JSONResponse { $gid = urldecode(urldecode($gid)); @@ -147,7 +148,6 @@ public function delete(string $gid, int $spaceId): JSONResponse { } /** - * @NoAdminRequired * @SpaceAdminRequired * * Renames a group @@ -158,6 +158,7 @@ public function delete(string $gid, int $spaceId): JSONResponse { * @var int $spaceId * */ + #[NoAdminRequired] public function rename(string $newGroupName, string $gid, int $spaceId): JSONResponse { @@ -191,7 +192,6 @@ public function rename(string $newGroupName, } /** - * @NoAdminRequired * @SpaceAdminRequired * Adds a user to a group. * The function automaticaly adds the user the the corresponding workspace's user group, and to the application @@ -202,6 +202,7 @@ public function rename(string $newGroupName, * @var string $user * */ + #[NoAdminRequired] public function addUser(string $spaceId, string $gid, string $user): JSONResponse { // Makes sure group exist $NCGroup = $this->groupManager->get($gid); @@ -241,7 +242,6 @@ public function addUser(string $spaceId, string $gid, string $user): JSONRespons /** * Remove a user from a workspace. * - * @NoAdminRequired * @SpaceAdminRequired * * @param array|string $space @@ -249,6 +249,7 @@ public function addUser(string $spaceId, string $gid, string $user): JSONRespons * @param string $user * @return JSONResponse */ + #[NoAdminRequired] public function removeUserFromWorkspace( array|string $space, string $gid, @@ -298,7 +299,6 @@ public function removeUserFromWorkspace( } /** - * @NoAdminRequired * @SpaceAdminRequired * * Removes a user from a group @@ -310,6 +310,7 @@ public function removeUserFromWorkspace( * @var string $user * */ + #[NoAdminRequired] public function removeUser( IRequest $request, array|string $space, @@ -385,9 +386,9 @@ public function removeUser( } /** - * @NoAdminRequired * @SpaceAdminRequired */ + #[NoAdminRequired] public function attachGroupToSpace(int $spaceId, string $gid) { $workspace = $this->spaceManager->get($spaceId); $this->spaceManager->attachGroup($workspace['groupfolder_id'], $gid); @@ -398,11 +399,11 @@ public function attachGroupToSpace(int $spaceId, string $gid) { } /** - * @NoAdminRequired * @GeneralManagerRequired * @param string|array $groupfolder * */ + #[NoAdminRequired] public function transferUsersToGroups(string $spaceId, string|array $groupfolder): JSONResponse { if (gettype($groupfolder) === 'string') { @@ -444,12 +445,11 @@ public function transferUsersToGroups(string $spaceId, } /** - * @NoAdminRequired - * * @param string $pattern The pattern to search * @param bool $ignoreSpaces (not require) Ignore the workspace groups * @param array $groupsPresents are groups already present */ + #[NoAdminRequired] public function search(string $pattern, ?bool $ignoreSpaces = null, array $groupsPresents = []): JSONResponse { [$groups] = $this->collaboratorSearch->search( diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 0d66b8ffd..43cdc1e3c 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -29,6 +29,8 @@ use OCA\Workspace\Exceptions\NotFoundException; use OCA\Workspace\Service\UserService; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\TemplateResponse; use OCP\IConfig; use OCP\IUserSession; @@ -44,10 +46,9 @@ public function __construct( /** * Application's main page - * - * @NoAdminRequired - * @NOCSRFRequired */ + #[NoAdminRequired] + #[NoCSRFRequired] public function index($path = ''): TemplateResponse { if (strpos($path, 'api/v') === 0) { // avoid non existing API routes to be handled by this controller diff --git a/lib/Controller/SpaceController.php b/lib/Controller/SpaceController.php index e53f409ca..f1b708694 100644 --- a/lib/Controller/SpaceController.php +++ b/lib/Controller/SpaceController.php @@ -28,6 +28,7 @@ use OCA\Workspace\Db\SpaceMapper; use OCA\Workspace\Service\SpaceService; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; @@ -41,24 +42,20 @@ public function __construct( parent::__construct($AppName, $request); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function find(int $id): DataResponse { return new DataResponse($this->spaceService->find($id)); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function findAll(): DataResponse { return new DataResponse($this->spaceService->findAll()); } /** - * @NoAdminRequired * @SpaceAdminRequired */ + #[NoAdminRequired] public function updateColorCode(string $colorCode, int $spaceId): DataResponse { return new DataResponse($this->spaceService->updateColorCode($colorCode, (int)$spaceId)); } diff --git a/lib/Controller/WorkspaceController.php b/lib/Controller/WorkspaceController.php index 6cd0d77b6..20eea38bd 100644 --- a/lib/Controller/WorkspaceController.php +++ b/lib/Controller/WorkspaceController.php @@ -44,6 +44,7 @@ use OCA\Workspace\Space\SpaceManager; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; use OCP\IRequest; @@ -85,10 +86,10 @@ private function deleteBlankSpaceName(string $spaceName): string { } /** - * @NoAdminRequired * @GeneralManagerRequired * @param string $spaceName */ + #[NoAdminRequired] public function createWorkspace(string $spaceName): JSONResponse { $workspace = $this->spaceManager->create($spaceName); @@ -106,11 +107,11 @@ public function createWorkspace(string $spaceName): JSONResponse { * * Deletes the workspace, and the corresponding groupfolder and groups * - * @NoAdminRequired * @GeneralManagerRequired * @param int $spaceId * */ + #[NoAdminRequired] public function destroy(int $spaceId): JSONResponse { $space = $this->spaceManager->get($spaceId); $groups = []; @@ -136,12 +137,9 @@ public function destroy(int $spaceId): JSONResponse { } /** - * * Returns a list of all the workspaces that the connected user may use. - * - * @NoAdminRequired - * */ + #[NoAdminRequired] public function findAll(): JSONResponse { $workspaces = $this->workspaceService->getAll(); $spaces = []; @@ -198,9 +196,7 @@ public function findAll(): JSONResponse { return new JSONResponse($spaces); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function getUsers(int $spaceId): JSONResponse { $space = $this->spaceMapper->find($spaceId); @@ -222,9 +218,7 @@ public function getUsers(int $spaceId): JSONResponse { return new JSONResponse($users); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function getAdmins(int $spaceId): JSONResponse { $space = $this->spaceMapper->find($spaceId); @@ -256,11 +250,11 @@ public function getAdmins(int $spaceId): JSONResponse { } /** - * @NoAdminRequired * @GeneralManagerRequired * @param int $spaceId of workspace * @param int $quota in bytes */ + #[NoAdminRequired] public function updateQuota(int $spaceId, int $quota): JSONResponse { $space = $this->spaceMapper->find($spaceId); @@ -283,17 +277,17 @@ public function updateQuota(int $spaceId, int $quota): JSONResponse { } /** - * @NoAdminRequired * @param string|array $workspace */ + #[NoAdminRequired] public function addGroupsInfo(string|array $workspace): JSONResponse { return new JSONResponse($this->workspaceService->addGroupsInfo($workspace)); } /** - * @NoAdminRequired * @param string|array $workspace */ + #[NoAdminRequired] public function addUsersInfo(string|array $workspace): JSONResponse { if (gettype($workspace) === 'string') { $workspace = json_decode($workspace, true); @@ -304,12 +298,12 @@ public function addUsersInfo(string|array $workspace): JSONResponse { /** * Returns a list of users whose name matches $term * - * @NoAdminRequired * @param string $term * @param string $spaceId * @param string|array $space * */ + #[NoAdminRequired] public function lookupUsers(string $term, string $spaceId, string|array $space): JSONResponse { @@ -324,13 +318,13 @@ public function lookupUsers(string $term, * * Change a user's role in a workspace * - * @NoAdminRequired * @SpaceAdminRequired * * @param array|string $space * @param string $userId * */ + #[NoAdminRequired] public function changeUserRole(array|string $space, string $userId): JSONResponse { if (gettype($space) === 'string') { @@ -357,12 +351,12 @@ public function changeUserRole(array|string $space, /** * - * @NoAdminRequired * @SpaceAdminRequired * @param int $spaceId * @param string $newSpaceName * */ + #[NoAdminRequired] public function renameSpace(int $spaceId, string $newSpaceName): JSONResponse {