Skip to content

Commit

Permalink
fix: Properly throttle in error cases and add rate limit for public f…
Browse files Browse the repository at this point in the history
…ile creation

Signed-off-by: Julius Knorr <[email protected]>
  • Loading branch information
juliusknorr committed Nov 7, 2024
1 parent 055392a commit ac2ef48
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/Controller/DocumentAPIController.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use OCA\Richdocuments\Helper;
use OCA\Richdocuments\TemplateManager;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\AnonRateLimit;
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\PublicPage;
Expand Down Expand Up @@ -57,6 +58,7 @@ public function __construct(
#[NoAdminRequired]
#[PublicPage]
#[BruteForceProtection(action: 'richdocumentsCreatePublic')]
#[AnonRateLimit(limit: 5, period: 120)]
public function create(string $mimeType, string $fileName, string $directoryPath = '/', ?string $shareToken = null, ?int $templateId = null): JSONResponse {
try {
if ($shareToken !== null) {
Expand All @@ -83,10 +85,12 @@ public function create(string $mimeType, string $fileName, string $directoryPath
}
} catch (Throwable $e) {
$this->logger->error('Failed to create document', ['exception' => $e]);
return new JSONResponse([
$response = new JSONResponse([
'status' => 'error',
'message' => $this->l10n->t('Cannot create document')
], Http::STATUS_BAD_REQUEST);
$response->throttle();
return $response;
}

$basename = $this->l10n->t('New Document.odt');
Expand Down

0 comments on commit ac2ef48

Please sign in to comment.