-
-
Notifications
You must be signed in to change notification settings - Fork 632
Expand file tree
/
Copy pathCpServiceProvider.php
More file actions
113 lines (94 loc) · 4.37 KB
/
Copy pathCpServiceProvider.php
File metadata and controls
113 lines (94 loc) · 4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
namespace Statamic\Providers;
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Statamic\CP\Utilities\UtilityRepository;
use Statamic\Extensions\Translation\Loader;
use Statamic\Extensions\Translation\Translator;
use Statamic\Facades\User;
use Statamic\Http\Middleware\CP\StartSession;
use Statamic\Http\View\Composers\JavascriptComposer;
use Statamic\Licensing\LicenseManager;
use Statamic\Licensing\Outpost;
use Statamic\View\Components\OutsideLogo;
class CpServiceProvider extends ServiceProvider
{
public function boot()
{
View::composer('statamic::*', function ($view) {
$view->with('user', User::current());
});
View::composer(JavascriptComposer::VIEWS, JavascriptComposer::class);
Blade::component('statamic::outside-logo', OutsideLogo::class);
Blade::directive('cp_svg', function ($expression) {
return "<?php echo Statamic::svg({$expression}) ?>";
});
Blade::directive('rarr', function ($expression) {
return "<?php echo Statamic::cpDirection() === 'ltr' ? '→' : '←' ?>";
});
$this->registerMiddlewareGroups();
$this->bootSelfClosingUiTags();
}
public function register()
{
$this->app->extend('translation.loader', function ($loader, $app) {
return new Loader($loader, $app['path.lang']);
});
$this->app->extend('translator', function ($translator, $app) {
$extended = new Translator($app['files'], $translator->getLoader(), $translator->getLocale());
$extended->setFallback($translator->getFallback());
return $extended;
});
$this->app->singleton(UtilityRepository::class, function () {
return new UtilityRepository;
});
$this->app->singleton(LicenseManager::class, function ($app) {
return new LicenseManager($app[Outpost::class]);
});
$this->app->singleton(StartSession::class, function ($app) {
return new StartSession($app->make('session'), function () use ($app) {
return $app->make('cache');
});
});
}
protected function registerMiddlewareGroups()
{
$router = $this->app->make(Router::class);
$router->middlewareGroup('statamic.cp', [
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Statamic\Http\Middleware\CP\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class,
\Statamic\Http\Middleware\CP\HandleInertiaRequests::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Statamic\Http\Middleware\CP\ContactOutpost::class,
\Statamic\Http\Middleware\CP\AuthGuard::class,
\Statamic\Http\Middleware\CP\AddToasts::class,
\Statamic\Http\Middleware\CP\TrimStrings::class,
]);
$router->middlewareGroup('statamic.cp.authenticated', [
\Statamic\Http\Middleware\CP\AuthenticateSession::class,
\Statamic\Http\Middleware\CP\Localize::class,
\Statamic\Http\Middleware\CP\Authorize::class,
\Statamic\Http\Middleware\CP\SelectedSite::class,
\Statamic\Http\Middleware\CP\BootPermissions::class,
\Statamic\Http\Middleware\CP\BootPreferences::class,
\Statamic\Http\Middleware\CP\BootUtilities::class,
\Statamic\Http\Middleware\CP\CountUsers::class,
\Statamic\Http\Middleware\CP\AddVaryHeaderToResponse::class,
\Statamic\Http\Middleware\CP\RedirectIfTwoFactorSetupIncomplete::class,
\Statamic\Http\Middleware\DeleteTemporaryFileUploads::class,
\Statamic\Http\Middleware\CP\HandleAuthenticatedInertiaRequests::class,
]);
}
private function bootSelfClosingUiTags()
{
// Converts <ui-component /> to <ui-component></ui-component>
Blade::prepareStringsForCompilationUsing(fn ($template) => str_contains($template, '<ui-')
? preg_replace_callback('/<(ui-[a-zA-Z0-9_-]+)([^>]*)\/>/', fn ($match) => "<{$match[1]}{$match[2]}></{$match[1]}>", $template)
: $template);
}
}