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 {