This repository was archived by the owner on Aug 22, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathServiceProvider.php
More file actions
122 lines (101 loc) · 3.99 KB
/
ServiceProvider.php
File metadata and controls
122 lines (101 loc) · 3.99 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
114
115
116
117
118
119
120
121
122
<?php
declare(strict_types=1);
namespace Codedge\MagicLink;
use Codedge\MagicLink\Events\LinkCreated;
use Codedge\MagicLink\Http\Controllers\Cp\Auth\LoginController;
use Codedge\MagicLink\Listeners\SendLinkNotification;
use Codedge\MagicLink\Repositories\SettingsRepository;
use Illuminate\Filesystem\Filesystem;
use Statamic\Facades\CP\Nav;
use Statamic\Facades\Permission;
use Statamic\Http\Controllers\CP\Auth\LoginController as StatamicLoginController;
use Statamic\Providers\AddonServiceProvider;
final class ServiceProvider extends AddonServiceProvider
{
protected $routes = [
'cp' => __DIR__.'/../routes/cp.php',
'web' => __DIR__.'/../routes/web.php',
];
protected $stylesheets = [
__DIR__.'/../public/css/statamic-magiclink.css',
];
protected $scripts = [
__DIR__.'/../public/js/statamic-magiclink.js',
];
protected $tags = [
\Codedge\MagicLink\Tags\Magiclink::class,
];
protected $listen = [
LinkCreated::class => [
SendLinkNotification::class,
],
];
protected $middlewareGroups = [
'magic-link' => [
\Codedge\MagicLink\Http\Middleware\MagicLink::class,
],
];
protected $viewNamespace = 'magiclink';
public function boot()
{
parent::boot();
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'magiclink');
$this->bootNavigation();
$this->bootPermissions();
if ($this->app->runningInConsole()) {
// Publish config
$this->publishes([
__DIR__.'/../config/config.php' => config_path('statamic-magiclink.php'),
], 'magiclink-config');
//Publish views
$this->publishes([
__DIR__.'/../resources/views' => resource_path('views/vendor/statamic-magiclink/views'),
], 'magiclink-views');
}
}
public function register()
{
$this->mergeConfigFrom(__DIR__.'/../config/config.php', 'statamic-magiclink');
/*
* Swap login controller to be able to inject custom template.
*/
$this->app->bind(StatamicLoginController::class, LoginController::class);
$this->app->bind(SettingsRepository::class, function () {
return new SettingsRepository(new Filesystem());
});
$this->app->bind(MagicLinkManager::class, function () {
return new MagicLinkManager(new Filesystem(), resolve(SettingsRepository::class));
});
}
private function bootNavigation(): void
{
Nav::extend(function ($nav) {
$nav->create('MagicLink')
->icon('link')
->section('Tools')
->children([
Nav::item(__('magiclink::cp.settings.settings'))->route('magiclink.index')
->can('view magiclink settings'),
Nav::item(__('magiclink::cp.links.links'))->route('magiclink.links.index')
->can('view links'),
]);
});
}
private function bootPermissions(): void
{
$this->app->booted(function () {
Permission::group('magiclink_general', __('magiclink::cp.permissions.settings'), function () {
Permission::register('view magiclink settings', function (\Statamic\Auth\Permission $permission) {
$permission
->label(__('magiclink::cp.permissions.view_settings'))
->description(__('magiclink::cp.permissions.view_settings_description'));
});
Permission::register('view links', function (\Statamic\Auth\Permission $permission) {
$permission
->label(__('magiclink::cp.permissions.view_links'))
->description(__('magiclink::cp.permissions.view_links_description'));
});
});
});
}
}