| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace BookStack\Providers; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-18 00:45:00 +08:00
										 |  |  | use BookStack\Auth\Access\LoginService; | 
					
						
							| 
									
										
										
										
											2021-03-20 00:16:26 +08:00
										 |  |  | use BookStack\Auth\Access\SocialAuthService; | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | use BookStack\Entities\BreadcrumbsViewComposer; | 
					
						
							| 
									
										
										
										
											2020-11-22 08:17:45 +08:00
										 |  |  | use BookStack\Entities\Models\Book; | 
					
						
							|  |  |  | use BookStack\Entities\Models\Bookshelf; | 
					
						
							|  |  |  | use BookStack\Entities\Models\Chapter; | 
					
						
							|  |  |  | use BookStack\Entities\Models\Page; | 
					
						
							| 
									
										
										
										
											2021-10-14 22:33:08 +08:00
										 |  |  | use BookStack\Exceptions\WhoopsBookStackPrettyHandler; | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  | use BookStack\Settings\Setting; | 
					
						
							| 
									
										
										
										
											2018-09-25 23:58:03 +08:00
										 |  |  | use BookStack\Settings\SettingService; | 
					
						
							| 
									
										
										
										
											2021-09-04 20:57:04 +08:00
										 |  |  | use BookStack\Util\CspService; | 
					
						
							| 
									
										
										
										
											2021-10-13 23:51:27 +08:00
										 |  |  | use GuzzleHttp\Client; | 
					
						
							| 
									
										
										
										
											2021-01-29 06:46:15 +08:00
										 |  |  | use Illuminate\Contracts\Cache\Repository; | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  | use Illuminate\Database\Eloquent\Relations\Relation; | 
					
						
							| 
									
										
										
										
											2021-09-26 22:48:22 +08:00
										 |  |  | use Illuminate\Support\Facades\Blade; | 
					
						
							|  |  |  | use Illuminate\Support\Facades\Schema; | 
					
						
							|  |  |  | use Illuminate\Support\Facades\URL; | 
					
						
							| 
									
										
										
										
											2019-04-08 01:28:11 +08:00
										 |  |  | use Illuminate\Support\Facades\View; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | use Illuminate\Support\ServiceProvider; | 
					
						
							| 
									
										
										
										
											2021-03-20 00:16:26 +08:00
										 |  |  | use Laravel\Socialite\Contracts\Factory as SocialiteFactory; | 
					
						
							| 
									
										
										
										
											2021-10-13 23:51:27 +08:00
										 |  |  | use Psr\Http\Client\ClientInterface as HttpClientInterface; | 
					
						
							| 
									
										
										
										
											2021-10-16 23:01:59 +08:00
										 |  |  | use Whoops\Handler\HandlerInterface; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class AppServiceProvider extends ServiceProvider | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Bootstrap any application services. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function boot() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-08-04 21:26:39 +08:00
										 |  |  |         // Set root URL
 | 
					
						
							| 
									
										
										
										
											2019-09-01 19:07:51 +08:00
										 |  |  |         $appUrl = config('app.url'); | 
					
						
							|  |  |  |         if ($appUrl) { | 
					
						
							|  |  |  |             $isHttps = (strpos($appUrl, 'https://') === 0); | 
					
						
							|  |  |  |             URL::forceRootUrl($appUrl); | 
					
						
							|  |  |  |             URL::forceScheme($isHttps ? 'https' : 'http'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-08-04 21:26:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  |         // Custom blade view directives
 | 
					
						
							|  |  |  |         Blade::directive('icon', function ($expression) { | 
					
						
							| 
									
										
										
										
											2017-02-04 19:01:49 +08:00
										 |  |  |             return "<?php echo icon($expression); ?>"; | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-03 00:20:05 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // Allow longer string lengths after upgrade to utf8mb4
 | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  |         Schema::defaultStringLength(191); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Set morph-map due to namespace changes
 | 
					
						
							|  |  |  |         Relation::morphMap([ | 
					
						
							|  |  |  |             'BookStack\\Bookshelf' => Bookshelf::class, | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'BookStack\\Book'      => Book::class, | 
					
						
							|  |  |  |             'BookStack\\Chapter'   => Chapter::class, | 
					
						
							|  |  |  |             'BookStack\\Page'      => Page::class, | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2019-04-08 01:28:11 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // View Composers
 | 
					
						
							| 
									
										
										
										
											2021-08-22 20:15:58 +08:00
										 |  |  |         View::composer('entities.breadcrumbs', BreadcrumbsViewComposer::class); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Register any application services. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function register() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-10-15 21:16:45 +08:00
										 |  |  |         $this->app->bind(HandlerInterface::class, function ($app) { | 
					
						
							| 
									
										
										
										
											2021-10-14 22:33:08 +08:00
										 |  |  |             return $app->make(WhoopsBookStackPrettyHandler::class); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-29 00:58:52 +08:00
										 |  |  |         $this->app->singleton(SettingService::class, function ($app) { | 
					
						
							| 
									
										
										
										
											2021-01-29 06:46:15 +08:00
										 |  |  |             return new SettingService($app->make(Setting::class), $app->make(Repository::class)); | 
					
						
							| 
									
										
										
										
											2017-02-06 02:57:57 +08:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-03-20 00:16:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |         $this->app->singleton(SocialAuthService::class, function ($app) { | 
					
						
							| 
									
										
										
										
											2021-07-18 00:45:00 +08:00
										 |  |  |             return new SocialAuthService($app->make(SocialiteFactory::class), $app->make(LoginService::class)); | 
					
						
							| 
									
										
										
										
											2021-03-20 00:16:26 +08:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-09-04 20:57:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-07 05:19:06 +08:00
										 |  |  |         $this->app->singleton(CspService::class, function ($app) { | 
					
						
							| 
									
										
										
										
											2021-09-04 20:57:04 +08:00
										 |  |  |             return new CspService(); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-10-13 23:51:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-16 23:01:59 +08:00
										 |  |  |         $this->app->bind(HttpClientInterface::class, function ($app) { | 
					
						
							| 
									
										
										
										
											2021-10-14 20:37:55 +08:00
										 |  |  |             return new Client([ | 
					
						
							|  |  |  |                 'timeout' => 3, | 
					
						
							|  |  |  |             ]); | 
					
						
							| 
									
										
										
										
											2021-10-13 23:51:27 +08:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | } |