/**
* {@inheritdoc}
*/
public function boot()
{
$this->loadViewsFrom(__DIR__ . '/../../views', 'flarum');
$this->app->make('Illuminate\\Contracts\\Bus\\Dispatcher')->mapUsing(function ($command) {
return get_class($command) . 'Handler@handle';
});
$this->app->make('flarum.gate')->before(function (User $actor, $ability, $model = null) {
if ($actor->isAdmin() || !$model && $actor->hasPermission($ability)) {
return true;
}
return $this->app->make('events')->until(new GetPermission($actor, $ability, [$model]));
});
$this->registerPostTypes();
CommentPost::setFormatter($this->app->make('flarum.formatter'));
User::setHasher($this->app->make('hash'));
User::setGate($this->app->make('flarum.gate'));
$events = $this->app->make('events');
$events->subscribe('Flarum\\Core\\Listener\\DiscussionMetadataUpdater');
$events->subscribe('Flarum\\Core\\Listener\\UserMetadataUpdater');
$events->subscribe('Flarum\\Core\\Listener\\EmailConfirmationMailer');
$events->subscribe('Flarum\\Core\\Listener\\DiscussionRenamedNotifier');
$events->subscribe('Flarum\\Core\\Listener\\FloodController');
$events->subscribe('Flarum\\Core\\Access\\DiscussionPolicy');
$events->subscribe('Flarum\\Core\\Access\\GroupPolicy');
$events->subscribe('Flarum\\Core\\Access\\PostPolicy');
$events->subscribe('Flarum\\Core\\Access\\UserPolicy');
$events->listen(ConfigureUserPreferences::class, [$this, 'configureUserPreferences']);
}