mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-12-15 15:44:03 +08:00
bba7dcce49
Extracted logout to the login service so the logic can be shared instead of re-implemented at each stage. For this, the SocialAuthService was split so the driver management is in its own class, so it can be used elsewhere without use (or circular dependencies) of the SocialAuthService. During review of #4467
83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace BookStack\App\Providers;
|
|
|
|
use BookStack\Access\SocialDriverManager;
|
|
use BookStack\Activity\Tools\ActivityLogger;
|
|
use BookStack\Entities\Models\Book;
|
|
use BookStack\Entities\Models\Bookshelf;
|
|
use BookStack\Entities\Models\Chapter;
|
|
use BookStack\Entities\Models\Page;
|
|
use BookStack\Exceptions\BookStackExceptionHandlerPage;
|
|
use BookStack\Http\HttpRequestService;
|
|
use BookStack\Permissions\PermissionApplicator;
|
|
use BookStack\Settings\SettingService;
|
|
use BookStack\Util\CspService;
|
|
use Illuminate\Contracts\Foundation\ExceptionRenderer;
|
|
use Illuminate\Database\Eloquent\Relations\Relation;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Support\Facades\URL;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Custom container bindings to register.
|
|
* @var string[]
|
|
*/
|
|
public $bindings = [
|
|
ExceptionRenderer::class => BookStackExceptionHandlerPage::class,
|
|
];
|
|
|
|
/**
|
|
* Custom singleton bindings to register.
|
|
* @var string[]
|
|
*/
|
|
public $singletons = [
|
|
'activity' => ActivityLogger::class,
|
|
SettingService::class => SettingService::class,
|
|
SocialDriverManager::class => SocialDriverManager::class,
|
|
CspService::class => CspService::class,
|
|
HttpRequestService::class => HttpRequestService::class,
|
|
];
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
// Set root URL
|
|
$appUrl = config('app.url');
|
|
if ($appUrl) {
|
|
$isHttps = str_starts_with($appUrl, 'https://');
|
|
URL::forceRootUrl($appUrl);
|
|
URL::forceScheme($isHttps ? 'https' : 'http');
|
|
}
|
|
|
|
// Allow longer string lengths after upgrade to utf8mb4
|
|
Schema::defaultStringLength(191);
|
|
|
|
// Set morph-map for our relations to friendlier aliases
|
|
Relation::enforceMorphMap([
|
|
'bookshelf' => Bookshelf::class,
|
|
'book' => Book::class,
|
|
'chapter' => Chapter::class,
|
|
'page' => Page::class,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Register any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
$this->app->singleton(PermissionApplicator::class, function ($app) {
|
|
return new PermissionApplicator(null);
|
|
});
|
|
}
|
|
}
|