| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2017-09-14 17:40:02 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Kernel.php | 
					
						
							|  |  |  |  * Copyright (c) 2017 thegrumpydictator@gmail.com | 
					
						
							|  |  |  |  * This software may be modified and distributed under the terms of the | 
					
						
							|  |  |  |  * Creative Commons Attribution-ShareAlike 4.0 International License. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * See the LICENSE file for details. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Http; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use FireflyIII\Http\Middleware\Authenticate; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\AuthenticateTwoFactor; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\Binder; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\EncryptCookies; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\IsAdmin; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\Range; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\RedirectIfAuthenticated; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\RedirectIfTwoFactorAuthenticated; | 
					
						
							|  |  |  | use FireflyIII\Http\Middleware\Sandstorm; | 
					
						
							|  |  |  | 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\SubstituteBindings; | 
					
						
							|  |  |  | use Illuminate\Routing\Middleware\ThrottleRequests; | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  | use Illuminate\Session\Middleware\StartSession; | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  | use Illuminate\View\Middleware\ShareErrorsFromSession; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 19:33:31 +01:00
										 |  |  | class Kernel extends HttpKernel | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * The application's global HTTP middleware stack. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  |      * These middleware are run during every request to your application. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2015-02-06 19:33:31 +01:00
										 |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |     protected $middleware | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             CheckForMaintenanceMode::class, | 
					
						
							|  |  |  |             ValidatePostSize::class, | 
					
						
							|  |  |  |             TrimStrings::class, | 
					
						
							|  |  |  |             ConvertEmptyStringsToNull::class, | 
					
						
							|  |  |  |             TrustProxies::class, | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 19:33:31 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  |      * The application's route middleware groups. | 
					
						
							| 
									
										
										
										
											2015-02-06 19:33:31 +01:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |     protected $middlewareGroups | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             // does not check login
 | 
					
						
							|  |  |  |             // does not check 2fa
 | 
					
						
							|  |  |  |             // does not check activation
 | 
					
						
							|  |  |  |             'web'                   => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // MUST NOT be logged in. Does not care about 2FA or confirmation.
 | 
					
						
							|  |  |  |             'user-not-logged-in'    => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |                 RedirectIfAuthenticated::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |             // MUST be logged in.
 | 
					
						
							|  |  |  |             // MUST NOT have 2FA
 | 
					
						
							|  |  |  |             // don't care about confirmation:
 | 
					
						
							|  |  |  |             'user-logged-in-no-2fa' => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							|  |  |  |                 RedirectIfTwoFactorAuthenticated::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // don't care about 2fa
 | 
					
						
							|  |  |  |             // don't care about confirmation.
 | 
					
						
							|  |  |  |             'user-simple-auth'      => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // MUST have 2fa
 | 
					
						
							|  |  |  |             // MUST be confirmed.
 | 
					
						
							|  |  |  |             // (this group includes the other Firefly middleware)
 | 
					
						
							|  |  |  |             'user-full-auth'        => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							|  |  |  |                 AuthenticateTwoFactor::class, | 
					
						
							|  |  |  |                 Range::class, | 
					
						
							|  |  |  |                 Binder::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |             // MUST be logged in
 | 
					
						
							|  |  |  |             // MUST have 2fa
 | 
					
						
							|  |  |  |             // MUST be confirmed.
 | 
					
						
							|  |  |  |             // MUST have owner role
 | 
					
						
							|  |  |  |             // (this group includes the other Firefly middleware)
 | 
					
						
							|  |  |  |             'admin'                 => [ | 
					
						
							|  |  |  |                 Sandstorm::class, | 
					
						
							|  |  |  |                 EncryptCookies::class, | 
					
						
							|  |  |  |                 AddQueuedCookiesToResponse::class, | 
					
						
							| 
									
										
										
										
											2017-09-12 18:24:12 +02:00
										 |  |  |                 StartSession::class, | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |                 ShareErrorsFromSession::class, | 
					
						
							|  |  |  |                 VerifyCsrfToken::class, | 
					
						
							|  |  |  |                 SubstituteBindings::class, | 
					
						
							|  |  |  |                 Authenticate::class, | 
					
						
							|  |  |  |                 AuthenticateTwoFactor::class, | 
					
						
							|  |  |  |                 IsAdmin::class, | 
					
						
							|  |  |  |                 Range::class, | 
					
						
							|  |  |  |                 Binder::class, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             'api' => [ | 
					
						
							|  |  |  |                 'throttle:60,1', | 
					
						
							|  |  |  |                 'bindings', | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-08 16:01:21 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The application's route middleware. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * These middleware may be assigned to groups or used individually. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2017-09-10 08:33:51 +02:00
										 |  |  |     protected $routeMiddleware | 
					
						
							|  |  |  |         = [ | 
					
						
							|  |  |  |             'auth'       => Authenticate::class, | 
					
						
							|  |  |  |             'auth.basic' => AuthenticateWithBasicAuth::class, | 
					
						
							|  |  |  |             'bindings'   => SubstituteBindings::class, | 
					
						
							|  |  |  |             'can'        => Authorize::class, | 
					
						
							|  |  |  |             'guest'      => RedirectIfAuthenticated::class, | 
					
						
							|  |  |  |             'throttle'   => ThrottleRequests::class, | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | } |