Merge pull request #26787 from nextcloud/backport/26718/stable19
[stable19] Fix ratelimit template
This commit is contained in:
commit
ecab69d513
|
@ -27,7 +27,7 @@ namespace OC\AppFramework\Middleware\Security;
|
|||
use OC\AppFramework\Utility\ControllerMethodReflector;
|
||||
use OC\Security\RateLimiting\Exception\RateLimitExceededException;
|
||||
use OC\Security\RateLimiting\Limiter;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Middleware;
|
||||
use OCP\IRequest;
|
||||
|
@ -110,18 +110,13 @@ class RateLimitingMiddleware extends Middleware {
|
|||
public function afterException($controller, $methodName, \Exception $exception) {
|
||||
if ($exception instanceof RateLimitExceededException) {
|
||||
if (stripos($this->request->getHeader('Accept'),'html') === false) {
|
||||
$response = new JSONResponse(
|
||||
[
|
||||
'message' => $exception->getMessage(),
|
||||
],
|
||||
$exception->getCode()
|
||||
);
|
||||
$response = new DataResponse([], $exception->getCode());
|
||||
} else {
|
||||
$response = new TemplateResponse(
|
||||
'core',
|
||||
'403',
|
||||
[
|
||||
'file' => $exception->getMessage()
|
||||
'message' => $exception->getMessage(),
|
||||
],
|
||||
'guest'
|
||||
);
|
||||
|
|
|
@ -212,6 +212,10 @@ class Throttler {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if ($ip === '') {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$cutoffTime = (new \DateTime())
|
||||
->sub($this->getCutoff(43200))
|
||||
->getTimestamp();
|
||||
|
|
|
@ -168,9 +168,11 @@ class Base {
|
|||
if (!is_null($additionalParams)) {
|
||||
$_ = array_merge($additionalParams, $this->vars);
|
||||
foreach ($_ as $var => $value) {
|
||||
if (!isset(${$var})) {
|
||||
${$var} = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Include
|
||||
ob_start();
|
||||
|
|
|
@ -26,13 +26,16 @@ use OC\AppFramework\Utility\ControllerMethodReflector;
|
|||
use OC\Security\RateLimiting\Exception\RateLimitExceededException;
|
||||
use OC\Security\RateLimiting\Limiter;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\IRequest;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserSession;
|
||||
use Test\TestCase;
|
||||
|
||||
/**
|
||||
* @group DB
|
||||
*/
|
||||
class RateLimitingMiddlewareTest extends TestCase {
|
||||
/** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */
|
||||
private $request;
|
||||
|
@ -250,11 +253,7 @@ class RateLimitingMiddlewareTest extends TestCase {
|
|||
->willReturn('JSON');
|
||||
|
||||
$result = $this->rateLimitingMiddleware->afterException($controller, 'testMethod', new RateLimitExceededException());
|
||||
$expected = new JSONResponse(
|
||||
[
|
||||
'message' => 'Rate limit exceeded',
|
||||
],
|
||||
429
|
||||
$expected = new DataResponse([], 429
|
||||
);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
@ -273,11 +272,12 @@ class RateLimitingMiddlewareTest extends TestCase {
|
|||
'core',
|
||||
'403',
|
||||
[
|
||||
'file' => 'Rate limit exceeded',
|
||||
'message' => 'Rate limit exceeded',
|
||||
],
|
||||
'guest'
|
||||
);
|
||||
$expected->setStatus(429);
|
||||
$this->assertEquals($expected, $result);
|
||||
$this->assertIsString($result->render());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue