Skip to content

Commit 2bed55d

Browse files
Merge pull request #11019 from nextcloud/bugfix/noid/parameter-out-of-range-middleware
fix(API): Add ParameterOutOfRange middleware
2 parents d4e083f + a48b84f commit 2bed55d

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

lib/AppInfo/Application.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
use OCA\Talk\Maps\MapsPluginLoader;
104104
use OCA\Talk\Middleware\CanUseTalkMiddleware;
105105
use OCA\Talk\Middleware\InjectionMiddleware;
106+
use OCA\Talk\Middleware\ParameterOutOfRangeMiddleware;
106107
use OCA\Talk\Notification\Listener as NotificationListener;
107108
use OCA\Talk\Notification\Notifier;
108109
use OCA\Talk\OCP\TalkBackend;
@@ -165,6 +166,7 @@ public function __construct(array $urlParams = []) {
165166
public function register(IRegistrationContext $context): void {
166167
$context->registerMiddleWare(CanUseTalkMiddleware::class);
167168
$context->registerMiddleWare(InjectionMiddleware::class);
169+
$context->registerMiddleWare(ParameterOutOfRangeMiddleware::class);
168170
$context->registerCapability(Capabilities::class);
169171

170172
// Listeners to load the UI and integrate it into other apps
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
/**
5+
* @copyright Copyright (c) 2023 Joas Schilling <[email protected]>
6+
*
7+
* @author Joas Schilling <[email protected]>
8+
*
9+
* @license GNU AGPL version 3 or any later version
10+
*
11+
* This program is free software: you can redistribute it and/or modify
12+
* it under the terms of the GNU Affero General Public License as
13+
* published by the Free Software Foundation, either version 3 of the
14+
* License, or (at your option) any later version.
15+
*
16+
* This program is distributed in the hope that it will be useful,
17+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19+
* GNU Affero General Public License for more details.
20+
*
21+
* You should have received a copy of the GNU Affero General Public License
22+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23+
*
24+
*/
25+
26+
namespace OCA\Talk\Middleware;
27+
28+
use OCP\AppFramework\Controller;
29+
use OCP\AppFramework\Http;
30+
use OCP\AppFramework\Http\DataResponse;
31+
use OCP\AppFramework\Http\ParameterOutOfRangeException;
32+
use OCP\AppFramework\Http\Response;
33+
use OCP\AppFramework\Middleware;
34+
use OCP\AppFramework\OCSController;
35+
36+
class ParameterOutOfRangeMiddleware extends Middleware {
37+
/**
38+
* @throws \Exception
39+
*/
40+
public function afterException(Controller $controller, string $methodName, \Exception $exception): Response {
41+
if ($exception instanceof ParameterOutOfRangeException
42+
&& $controller instanceof OCSController) {
43+
return new DataResponse([
44+
'error' => $exception->getParameterName(),
45+
], Http::STATUS_BAD_REQUEST);
46+
}
47+
48+
throw $exception;
49+
}
50+
}

0 commit comments

Comments
 (0)