| 
									
										
										
										
											2016-01-08 16:00:07 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2022-12-29 19:42:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * AppServiceProvider.php | 
					
						
							| 
									
										
										
										
											2020-02-16 13:55:59 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2016-10-05 06:52:15 +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/>. | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-04-09 07:44:22 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							| 
									
										
										
										
											2016-01-08 16:00:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Providers; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-17 20:23:02 +01:00
										 |  |  | use Illuminate\Support\Facades\Blade; | 
					
						
							| 
									
										
										
										
											2022-12-29 19:42:26 +01:00
										 |  |  | use Illuminate\Support\Facades\Response; | 
					
						
							| 
									
										
										
										
											2024-03-23 20:37:15 +01:00
										 |  |  | use Illuminate\Support\Facades\Route; | 
					
						
							| 
									
										
										
										
											2017-09-10 09:46:50 +02:00
										 |  |  | use Illuminate\Support\Facades\Schema; | 
					
						
							| 
									
										
										
										
											2017-09-14 17:40:02 +02:00
										 |  |  | use Illuminate\Support\ServiceProvider; | 
					
						
							| 
									
										
										
										
											2024-06-15 09:15:48 +02:00
										 |  |  | use Laravel\Passport\Passport; | 
					
						
							| 
									
										
										
										
											2025-05-27 16:57:36 +02:00
										 |  |  | use Override; | 
					
						
							| 
									
										
										
										
											2018-08-06 19:14:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-27 17:06:15 +02:00
										 |  |  | use function Safe\preg_match; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-09 08:20:55 +01:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2020-01-01 15:34:38 +01:00
										 |  |  |  * Class AppServiceProvider | 
					
						
							| 
									
										
										
										
											2016-01-09 08:20:55 +01:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  | class AppServiceProvider extends ServiceProvider | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Bootstrap any application services. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2018-07-22 18:50:27 +02:00
										 |  |  |     public function boot(): void | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2017-09-10 09:46:50 +02:00
										 |  |  |         Schema::defaultStringLength(191); | 
					
						
							| 
									
										
										
										
											2025-05-25 06:24:01 +02:00
										 |  |  |         // Passport::$clientUuids = false;
 | 
					
						
							| 
									
										
										
										
											2025-05-19 18:02:27 +02:00
										 |  |  |         Response::macro('api', function (array $value) { | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |             $headers = [ | 
					
						
							| 
									
										
										
										
											2022-12-29 19:42:26 +01:00
										 |  |  |                 'Cache-Control' => 'no-store', | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |             ]; | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             $uuid    = (string) request()->header('X-Trace-Id'); | 
					
						
							| 
									
										
										
										
											2025-05-27 17:06:15 +02:00
										 |  |  |             if ('' !== trim($uuid) && (1 === preg_match('/^[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}$/i', trim($uuid)))) { | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |                 $headers['X-Trace-Id'] = $uuid; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |             return response() | 
					
						
							|  |  |  |                 ->json($value) | 
					
						
							| 
									
										
										
										
											2024-03-25 04:10:34 +01:00
										 |  |  |                 ->withHeaders($headers) | 
					
						
							|  |  |  |             ; | 
					
						
							| 
									
										
										
										
											2024-01-14 07:06:55 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // blade extension
 | 
					
						
							|  |  |  |         Blade::directive('activeXRoutePartial', function (string $route) { | 
					
						
							| 
									
										
										
										
											2025-05-24 17:15:46 +02:00
										 |  |  |             $name = Route::getCurrentRoute()->getName() ?? ''; | 
					
						
							| 
									
										
										
										
											2024-01-14 07:06:55 +01:00
										 |  |  |             if (str_contains($name, $route)) { | 
					
						
							|  |  |  |                 return 'menu-open'; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             return ''; | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2024-03-23 20:37:15 +01:00
										 |  |  |         Blade::if('partialroute', function (string $route, string $firstParam = '') { | 
					
						
							| 
									
										
										
										
											2024-03-25 04:10:34 +01:00
										 |  |  |             $name       = Route::getCurrentRoute()->getName() ?? ''; | 
					
						
							| 
									
										
										
										
											2024-03-23 20:37:15 +01:00
										 |  |  |             if ('' === $firstParam && str_contains($name, $route)) { | 
					
						
							|  |  |  |                 return true; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-04-02 15:40:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             /** @var null|array $params */ | 
					
						
							|  |  |  |             $params     = Route::getCurrentRoute()->parameters(); | 
					
						
							|  |  |  |             $params ??= []; | 
					
						
							| 
									
										
										
										
											2024-03-23 20:37:15 +01:00
										 |  |  |             $objectType = $params['objectType'] ?? ''; | 
					
						
							|  |  |  |             if ($objectType === $firstParam && str_contains($name, $route)) { | 
					
						
							| 
									
										
										
										
											2024-01-14 07:06:55 +01:00
										 |  |  |                 return true; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             return false; | 
					
						
							| 
									
										
										
										
											2022-06-23 09:33:43 +02:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Register any application services. | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2025-05-27 16:57:36 +02:00
										 |  |  |     #[Override]
 | 
					
						
							| 
									
										
										
										
											2018-07-22 18:50:27 +02:00
										 |  |  |     public function register(): void | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-06-15 09:15:48 +02:00
										 |  |  |         Passport::ignoreRoutes(); | 
					
						
							| 
									
										
										
										
											2024-03-17 11:44:58 +01:00
										 |  |  |         //        Passport::ignoreMigrations();
 | 
					
						
							|  |  |  |         //        Sanctum::ignoreMigrations();
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | } |