mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
38829f8a38
Added test and changed logic to properly check the view permissions for the notification receiver before sending. Required change to permissions applicator to allow the user to be manually determined, and a service provider update to provide the class as a singleton without a specific user, so it checks the current logged in user on demand.
89 lines
2.5 KiB
PHP
89 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace BookStack\App\Providers;
|
|
|
|
use BookStack\Access\SocialAuthService;
|
|
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\Permissions\PermissionApplicator;
|
|
use BookStack\Settings\SettingService;
|
|
use BookStack\Util\CspService;
|
|
use GuzzleHttp\Client;
|
|
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;
|
|
use Psr\Http\Client\ClientInterface as HttpClientInterface;
|
|
|
|
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,
|
|
SocialAuthService::class => SocialAuthService::class,
|
|
CspService::class => CspService::class,
|
|
];
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
// Set root URL
|
|
$appUrl = config('app.url');
|
|
if ($appUrl) {
|
|
$isHttps = (strpos($appUrl, 'https://') === 0);
|
|
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->bind(HttpClientInterface::class, function ($app) {
|
|
return new Client([
|
|
'timeout' => 3,
|
|
]);
|
|
});
|
|
|
|
$this->app->singleton(PermissionApplicator::class, function ($app) {
|
|
return new PermissionApplicator(null);
|
|
});
|
|
}
|
|
}
|