| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2022-12-29 19:41:57 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Kernel.php | 
					
						
							| 
									
										
										
										
											2020-01-31 07:32:04 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-09-14 17:40:02 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  | namespace FireflyIII\Http; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  | use FireflyIII\Http\Middleware\AcceptHeaders; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use FireflyIII\Http\Middleware\Authenticate; | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  | use FireflyIII\Http\Middleware\Binder; | 
					
						
							| 
									
										
										
										
											2018-02-09 19:11:55 +01:00
										 |  |  | use FireflyIII\Http\Middleware\EncryptCookies; | 
					
						
							| 
									
										
										
										
											2020-01-31 07:24:41 +01:00
										 |  |  | use FireflyIII\Http\Middleware\InstallationId; | 
					
						
							| 
									
										
										
										
											2018-03-07 20:21:36 +01:00
										 |  |  | use FireflyIII\Http\Middleware\Installer; | 
					
						
							| 
									
										
										
										
											2019-08-05 19:45:20 +02:00
										 |  |  | use FireflyIII\Http\Middleware\InterestingMessage; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use FireflyIII\Http\Middleware\IsAdmin; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\Range; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\RedirectIfAuthenticated; | 
					
						
							| 
									
										
										
										
											2018-08-25 07:55:32 +02:00
										 |  |  | use FireflyIII\Http\Middleware\SecureHeaders; | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  | use FireflyIII\Http\Middleware\StartFireflySession; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use FireflyIII\Http\Middleware\TrimStrings; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\TrustProxies; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\VerifyCsrfToken; | 
					
						
							|  |  |  | use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth; | 
					
						
							|  |  |  | use Illuminate\Auth\Middleware\Authorize; | 
					
						
							|  |  |  | use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | use Illuminate\Foundation\Http\Kernel as HttpKernel; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode; | 
					
						
							|  |  |  | use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull; | 
					
						
							|  |  |  | use Illuminate\Foundation\Http\Middleware\ValidatePostSize; | 
					
						
							|  |  |  | use Illuminate\Routing\Middleware\ThrottleRequests; | 
					
						
							| 
									
										
										
										
											2020-06-27 15:42:18 +02:00
										 |  |  | use Illuminate\Session\Middleware\AuthenticateSession; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use Illuminate\View\Middleware\ShareErrorsFromSession; | 
					
						
							| 
									
										
										
										
											2018-02-07 10:49:06 +01:00
										 |  |  | use Laravel\Passport\Http\Middleware\CreateFreshApiToken; | 
					
						
							| 
									
										
										
										
											2022-02-27 10:04:08 +01:00
										 |  |  | use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; | 
					
						
							| 
									
										
										
										
											2019-08-03 19:54:30 +02:00
										 |  |  | use PragmaRX\Google2FALaravel\Middleware as MFAMiddleware; | 
					
						
							| 
									
										
										
										
											2018-02-07 10:49:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 14:30:53 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Class Kernel | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-02-06 19:33:31 +01:00
										 |  |  | class Kernel extends HttpKernel | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |     protected $middleware | 
					
						
							|  |  |  |         = [ | 
					
						
							| 
									
										
										
										
											2018-08-25 07:55:32 +02:00
										 |  |  |             SecureHeaders::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             CheckForMaintenanceMode::class, | 
					
						
							|  |  |  |             ValidatePostSize::class, | 
					
						
							|  |  |  |             TrimStrings::class, | 
					
						
							|  |  |  |             ConvertEmptyStringsToNull::class, | 
					
						
							|  |  |  |             TrustProxies::class, | 
					
						
							| 
									
										
										
										
											2020-03-17 15:01:00 +01:00
										 |  |  |             InstallationId::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2023-05-29 13:56:55 +02:00
										 |  |  |     protected $middlewareAliases | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             'auth'       => Authenticate::class, | 
					
						
							|  |  |  |             'auth.basic' => AuthenticateWithBasicAuth::class, | 
					
						
							|  |  |  |             'bindings'   => Binder::class, | 
					
						
							|  |  |  |             'can'        => Authorize::class, | 
					
						
							|  |  |  |             'guest'      => RedirectIfAuthenticated::class, | 
					
						
							|  |  |  |             'throttle'   => ThrottleRequests::class, | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |     protected $middlewareGroups | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             // does not check login
 | 
					
						
							|  |  |  |             // does not check 2fa
 | 
					
						
							|  |  |  |             // does not check activation
 | 
					
						
							| 
									
										
										
										
											2019-02-13 17:38:41 +01:00
										 |  |  |             'web'                   => [ | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							| 
									
										
										
										
											2020-06-27 15:42:18 +02:00
										 |  |  |                 AuthenticateSession::class, | 
					
						
							| 
									
										
										
										
											2020-07-19 13:06:22 +02:00
										 |  |  |                 CreateFreshApiToken::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-12 14:26:11 +02:00
										 |  |  |             // only the basic variable binders.
 | 
					
						
							|  |  |  |             'binders-only'          => [ | 
					
						
							|  |  |  |                 Installer::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							|  |  |  |                 Binder::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             // MUST NOT be logged in. Does not care about 2FA or confirmation.
 | 
					
						
							|  |  |  |             'user-not-logged-in'    => [ | 
					
						
							| 
									
										
										
										
											2018-03-07 20:21:36 +01:00
										 |  |  |                 Installer::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 Binder::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 RedirectIfAuthenticated::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |             // MUST be logged in.
 | 
					
						
							|  |  |  |             // MUST NOT have 2FA
 | 
					
						
							|  |  |  |             // don't care about confirmation:
 | 
					
						
							|  |  |  |             'user-logged-in-no-2fa' => [ | 
					
						
							| 
									
										
										
										
											2018-03-07 20:21:36 +01:00
										 |  |  |                 Installer::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 Binder::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 Authenticate::class, | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |                 // RedirectIfTwoFactorAuthenticated::class,
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // don't care about 2fa
 | 
					
						
							|  |  |  |             // don't care about confirmation.
 | 
					
						
							|  |  |  |             'user-simple-auth'      => [ | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 Binder::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 Authenticate::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // MUST have 2fa
 | 
					
						
							|  |  |  |             // MUST be confirmed.
 | 
					
						
							| 
									
										
										
										
											2020-11-25 06:25:08 +01:00
										 |  |  |             // (this group includes the other Firefly III middleware)
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             'user-full-auth'        => [ | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							| 
									
										
										
										
											2019-08-03 19:54:30 +02:00
										 |  |  |                 MFAMiddleware::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 Range::class, | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 Binder::class, | 
					
						
							| 
									
										
										
										
											2019-08-05 19:45:20 +02:00
										 |  |  |                 InterestingMessage::class, | 
					
						
							| 
									
										
										
										
											2020-07-19 13:06:22 +02:00
										 |  |  |                 CreateFreshApiToken::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // MUST have 2fa
 | 
					
						
							|  |  |  |             // MUST be confirmed.
 | 
					
						
							|  |  |  |             // MUST have owner role
 | 
					
						
							| 
									
										
										
										
											2020-11-25 06:25:08 +01:00
										 |  |  |             // (this group includes the other Firefly III middleware)
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             'admin'                 => [ | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-10-27 18:56:38 +02:00
										 |  |  |                 StartFireflySession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |                 // AuthenticateTwoFactor::class,
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 IsAdmin::class, | 
					
						
							|  |  |  |                 Range::class, | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 Binder::class, | 
					
						
							| 
									
										
										
										
											2018-02-04 08:14:03 +01:00
										 |  |  |                 CreateFreshApiToken::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-01 14:25:52 +01:00
										 |  |  |             // full API authentication
 | 
					
						
							| 
									
										
										
										
											2023-02-22 18:14:14 +01:00
										 |  |  |             'api'                   => [ | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |                 AcceptHeaders::class, | 
					
						
							| 
									
										
										
										
											2025-05-14 03:01:10 +02:00
										 |  |  |                 EnsureFrontendRequestsAreStateful::class, | 
					
						
							| 
									
										
										
										
											2025-06-23 20:45:00 +02:00
										 |  |  |                 'auth:api,sanctum', | 
					
						
							| 
									
										
										
										
											2018-02-09 15:01:22 +01:00
										 |  |  |                 'bindings', | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2023-01-01 14:25:52 +01:00
										 |  |  |             // do only bindings, no auth
 | 
					
						
							| 
									
										
										
										
											2023-02-22 18:14:14 +01:00
										 |  |  |             'api_basic'             => [ | 
					
						
							| 
									
										
										
										
											2023-01-10 19:56:38 +01:00
										 |  |  |                 AcceptHeaders::class, | 
					
						
							| 
									
										
										
										
											2021-03-21 11:06:08 +01:00
										 |  |  |                 'bindings', | 
					
						
							|  |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2019-03-16 21:54:25 +01:00
										 |  |  |     protected $middlewarePriority | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             StartFireflySession::class, | 
					
						
							|  |  |  |             ShareErrorsFromSession::class, | 
					
						
							|  |  |  |             Authenticate::class, | 
					
						
							|  |  |  |             Binder::class, | 
					
						
							|  |  |  |             Authorize::class, | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | } |