Skip to content

Commit 1005798

Browse files
committed
wip
1 parent fb47543 commit 1005798

File tree

7 files changed

+17
-46
lines changed

7 files changed

+17
-46
lines changed

core/classes/Middleware/AbstractMiddleware.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22

33
abstract class AbstractMiddleware
44
{
5-
abstract public function type(): MiddlewareType;
5+
public MiddlewareType $type = MiddlewareType::Global;
6+
7+
public array $exemptRoutes = [];
68
}

core/classes/Middleware/MiddlewareHandler.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
use DI\Container;
4+
use Symfony\Component\HttpFoundation\Request;
45

56
class MiddlewareHandler extends Instanceable
67
{
@@ -35,8 +36,15 @@ public function call(MiddlewareType $type, Container $container)
3536

3637
foreach ($middlewareClasses as $class) {
3738
$middleware = $container->get($class);
39+
$request = $container->get(Request::class);
3840

39-
if ($middleware->type() === $type) {
41+
foreach ($middleware->exemptRoutes as $exemptedRoute) {
42+
if (str_starts_with($request->get('route'), $exemptedRoute)) {
43+
continue 2; // Skip this middleware if the route is exempted
44+
}
45+
}
46+
47+
if ($middleware->type === $type) {
4048
$container->call([$middleware, 'handle']);
4149
}
4250
}

modules/Core/classes/Middleware/Frontend/EnsureUserIntegrationsLinkedMiddleware.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
class EnsureUserIntegrationsLinkedMiddleware extends AbstractMiddleware
44
{
5-
public function type(): MiddlewareType
6-
{
7-
return MiddlewareType::Frontend;
8-
}
5+
public MiddlewareType $type = MiddlewareType::Frontend;
96

107
public function handle(User $user, Language $language): void
118
{

modules/Core/classes/Middleware/Frontend/GlobalWarningsMiddleware.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
class GlobalWarningsMiddleware extends AbstractMiddleware
44
{
5-
public function type(): MiddlewareType
6-
{
7-
return MiddlewareType::Frontend;
8-
}
5+
public MiddlewareType $type = MiddlewareType::Frontend;
96

107
public function handle(User $user, Language $language, TemplateBase $template): void
118
{

modules/Core/classes/Middleware/Global/BannedUserMiddleware.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@
1111
*/
1212
class BannedUserMiddleware extends AbstractMiddleware
1313
{
14-
public function type(): MiddlewareType
15-
{
16-
return MiddlewareType::Global;
17-
}
18-
1914
public function handle(User $user, Language $language): void
2015
{
2116
if (($user->isLoggedIn() && $user->data()->isbanned) || DB::getInstance()->get('ip_bans', ['ip', HttpUtils::getRemoteAddress()])->exists()) {
Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<?php
22

3-
use Symfony\Component\HttpFoundation\Request;
4-
53
/**
64
* Maintenance Mode middleware hook.
75
* Redirects non-admin users when maintenance mode is enabled.
@@ -13,7 +11,7 @@
1311
*/
1412
class MaintenanceModeMiddleware extends AbstractMiddleware
1513
{
16-
private const EXEMPTED_ROUTES = [
14+
public array $exemptRoutes = [
1715
'/maintenance',
1816
'/login',
1917
'/forgot_password',
@@ -23,12 +21,7 @@ class MaintenanceModeMiddleware extends AbstractMiddleware
2321
'/store/listener',
2422
];
2523

26-
public function type(): MiddlewareType
27-
{
28-
return MiddlewareType::Global;
29-
}
30-
31-
public function handle(User $user, Request $request): void
24+
public function handle(User $user): void
3225
{
3326
// Check if maintenance mode is enabled
3427
if (!Settings::get('maintenance')) {
@@ -42,13 +35,6 @@ public function handle(User $user, Request $request): void
4235
return;
4336
}
4437

45-
$route = $request->get('route');
46-
foreach (self::EXEMPTED_ROUTES as $exempted_route) {
47-
if (str_starts_with($route, $exempted_route)) {
48-
return;
49-
}
50-
}
51-
5238
Redirect::to(URL::build('/maintenance'));
5339
}
5440
}

modules/Core/classes/Middleware/Global/TFAMiddleware.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,18 @@
1313
*/
1414
class TFAMiddleware extends AbstractMiddleware
1515
{
16-
private const EXEMPTED_ROUTES = [
16+
public array $exemptRoutes = [
1717
'/logout',
1818
'/user/settings' // Allow access to settings to enable TFA
1919
];
2020

21-
public function type(): MiddlewareType
22-
{
23-
return MiddlewareType::Global;
24-
}
25-
2621
public function handle(User $user, Request $request, Language $language): void
2722
{
2823
// Only process for logged-in users
2924
if (!$user->isLoggedIn()) {
3025
return;
3126
}
3227

33-
// Allow access to exempted routes
34-
$route = $request->get('route');
35-
foreach (self::EXEMPTED_ROUTES as $exempted_route) {
36-
// Ideally we can use $request->getPathInfo(), but our routing allows a following slash
37-
if (str_starts_with($route, $exempted_route)) {
38-
return;
39-
}
40-
}
41-
4228
// Skip if AJAX request, such as Alert or PM checks
4329
if ($request->isXmlHttpRequest()) {
4430
return;

0 commit comments

Comments
 (0)