mirror of
https://github.com/nextcloud/server.git
synced 2026-05-19 08:25:56 -04:00
Merge pull request #38277 from nextcloud/backport/38274/stable24
[stable24] fix(middleware): Also abort the request when reaching max delay in af…
This commit is contained in:
commit
fc3d3bedcf
2 changed files with 12 additions and 4 deletions
|
|
@ -86,8 +86,16 @@ class BruteForceMiddleware extends Middleware {
|
|||
if ($this->reflector->hasAnnotation('BruteForceProtection') && $response->isThrottled()) {
|
||||
$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
|
||||
$ip = $this->request->getRemoteAddress();
|
||||
$this->throttler->sleepDelay($ip, $action);
|
||||
$this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata());
|
||||
try {
|
||||
$this->throttler->sleepDelayOrThrowOnMax($ip, $action);
|
||||
} catch (MaxDelayReached $e) {
|
||||
if ($controller instanceof OCSController) {
|
||||
throw new OCSException($e->getMessage(), Http::STATUS_TOO_MANY_REQUESTS);
|
||||
}
|
||||
|
||||
return new TooManyRequestsResponse();
|
||||
}
|
||||
}
|
||||
|
||||
return parent::afterController($controller, $methodName, $response);
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ class BruteForceMiddlewareTest extends TestCase {
|
|||
->willReturn('127.0.0.1');
|
||||
$this->throttler
|
||||
->expects($this->once())
|
||||
->method('sleepDelay')
|
||||
->method('sleepDelayOrThrowOnMax')
|
||||
->with('127.0.0.1', 'login');
|
||||
$this->throttler
|
||||
->expects($this->once())
|
||||
|
|
@ -158,7 +158,7 @@ class BruteForceMiddlewareTest extends TestCase {
|
|||
->method('getRemoteAddress');
|
||||
$this->throttler
|
||||
->expects($this->never())
|
||||
->method('sleepDelay');
|
||||
->method('sleepDelayOrThrowOnMax');
|
||||
$this->throttler
|
||||
->expects($this->never())
|
||||
->method('registerAttempt');
|
||||
|
|
@ -182,7 +182,7 @@ class BruteForceMiddlewareTest extends TestCase {
|
|||
->method('getRemoteAddress');
|
||||
$this->throttler
|
||||
->expects($this->never())
|
||||
->method('sleepDelay');
|
||||
->method('sleepDelayOrThrowOnMax');
|
||||
|
||||
/** @var Controller|\PHPUnit\Framework\MockObject\MockObject $controller */
|
||||
$controller = $this->createMock(Controller::class);
|
||||
|
|
|
|||
Loading…
Reference in a new issue