Skip to content

Commit 1acbdd1

Browse files
Merge pull request #2835 from nextcloud/backport/2826/stable32
[stable32] fix: enhance validation upon team creation
2 parents 9395018 + b6821f7 commit 1acbdd1

4 files changed

Lines changed: 22 additions & 0 deletions

File tree

lib/Controller/LocalController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
use OCP\AppFramework\Http;
3838
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
3939
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
40+
use OCP\AppFramework\Http\Attribute\UserRateLimit;
4041
use OCP\AppFramework\Http\DataResponse;
4142
use OCP\AppFramework\OCS\OCSException;
4243
use OCP\AppFramework\OCSController;
@@ -119,6 +120,7 @@ public function __construct(
119120

120121

121122
#[NoAdminRequired]
123+
#[UserRateLimit(limit: 10, period: 60)]
122124
public function create(string $name, bool $personal = false, bool $local = false): DataResponse {
123125
try {
124126
if (!$this->configService->isGSAvailable() && $local === true) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\Circles\Exceptions;
11+
12+
class CircleNameTooLongException extends FederatedItemBadRequestException {
13+
}

lib/FederatedItems/CircleEdit.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use OCA\Circles\Db\CircleRequest;
1515
use OCA\Circles\Db\MemberRequest;
16+
use OCA\Circles\Exceptions\CircleNameTooLongException;
1617
use OCA\Circles\Exceptions\CircleNameTooShortException;
1718
use OCA\Circles\Exceptions\RequestBuilderException;
1819
use OCA\Circles\IFederatedItem;
@@ -70,6 +71,7 @@ public function __construct(
7071
*
7172
* @throws RequestBuilderException
7273
* @throws CircleNameTooShortException
74+
* @throws CircleNameTooLongException
7375
*/
7476
public function verify(FederatedEvent $event): void {
7577
$circle = $event->getCircle();
@@ -84,6 +86,8 @@ public function verify(FederatedEvent $event): void {
8486
$new->setName($this->circleService->cleanCircleName($data->g('name')));
8587
if (strlen($new->getName()) < 3) {
8688
throw new CircleNameTooShortException('Circle name is too short');
89+
} elseif (strlen($new->getName()) > 127) {
90+
throw new CircleNameTooLongException('Circle name is too long');
8791
}
8892
$event->getData()->s('name', $new->getName());
8993
}

lib/Service/CircleService.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use OCA\Circles\AppInfo\Application;
1515
use OCA\Circles\Db\CircleRequest;
1616
use OCA\Circles\Db\MemberRequest;
17+
use OCA\Circles\Exceptions\CircleNameTooLongException;
1718
use OCA\Circles\Exceptions\CircleNameTooShortException;
1819
use OCA\Circles\Exceptions\CircleNotFoundException;
1920
use OCA\Circles\Exceptions\FederatedEventException;
@@ -186,6 +187,8 @@ public function create(
186187

187188
if (strlen($circle->getName()) < 3) {
188189
throw new CircleNameTooShortException('Circle name is too short');
190+
} elseif (strlen($circle->getName()) > 127) {
191+
throw new CircleNameTooLongException('Circle name is too long');
189192
}
190193

191194
if ($personal) {

0 commit comments

Comments
 (0)