20
20
use ReaZzon \JWTAuth \Classes \Events \UserModelHandler ;
21
21
22
22
use System \Classes \PluginManager ;
23
- use Tymon \JWTAuth \Providers \LaravelServiceProvider ;
23
+ use PHPOpenSourceSaver \JWTAuth \Providers \LaravelServiceProvider ;
24
24
25
25
/**
26
26
* JWTAuth Plugin Information File
27
27
*/
28
28
class Plugin extends PluginBase
29
29
{
30
+ /**
31
+ *
32
+ */
33
+ public const PLUGIN_NAME = 'ReaZzon.JWTAuth ' ;
34
+
30
35
/**
31
36
* Returns information about this plugin.
32
37
*
@@ -53,11 +58,9 @@ public function register()
53
58
54
59
$ this ->app ->singleton (
55
60
UserPluginResolverContract::class,
56
- static fn () => UserPluginResolver::instance ()
61
+ static fn () => UserPluginResolver::instance (),
57
62
);
58
63
59
- $ this ->registerGates ();
60
- $ this ->registerJWT ();
61
64
}
62
65
63
66
/**
@@ -67,6 +70,17 @@ public function register()
67
70
*/
68
71
public function boot ()
69
72
{
73
+ if (!$ this ->getResolver ()->isRequiredResolve ()) {
74
+ PluginManager::instance ()->disablePlugin (static ::PLUGIN_NAME );
75
+ if (method_exists ($ this ->getResolver (), 'forgetInstance ' )) {
76
+ $ this ->getResolver ()::forgetInstance ();
77
+ }
78
+
79
+ return ;
80
+ }
81
+
82
+ $ this ->registerGates ();
83
+ $ this ->registerJWT ();
70
84
$ this ->registerConfigs ();
71
85
$ this ->addEventListeners ();
72
86
}
@@ -105,7 +119,7 @@ private function registerConfigs()
105
119
/**
106
120
*
107
121
*/
108
- private function addEventListeners ()
122
+ private function addEventListeners (): void
109
123
{
110
124
Event::subscribe (UserModelHandler::class);
111
125
}
@@ -120,7 +134,7 @@ private function registerGates(): void
120
134
121
135
$ this ->app ->singleton (GateContract::class, function ($ app ): Gate {
122
136
return new Gate ($ app , function () use ($ app ): ?User {
123
- return app (UserPluginResolverContract::class )->getProvider ()->user ();
137
+ return $ this -> getResolver ( )->getProvider ()->user ();
124
138
});
125
139
});
126
140
}
@@ -132,10 +146,10 @@ private function registerJWT(): void
132
146
{
133
147
(new LaravelServiceProvider ($ this ->app ))->register ();
134
148
135
- $ this ->app ->singleton ('JWTGuard ' , static function ($ app ): Guard {
149
+ $ this ->app ->singleton ('JWTGuard ' , function ($ app ): Guard {
136
150
$ guard = new JWTGuard (
137
151
$ app ['tymon.jwt ' ],
138
- new UserProvider (app (UserPluginResolverContract::class )->getModel ()),
152
+ new UserProvider ($ this -> getResolver ( )->getModel ()),
139
153
$ app ['request ' ]
140
154
);
141
155
@@ -144,6 +158,9 @@ private function registerJWT(): void
144
158
});
145
159
}
146
160
161
+ /**
162
+ * @return array[]
163
+ */
147
164
public function registerSettings (): array
148
165
{
149
166
return [
@@ -159,4 +176,12 @@ public function registerSettings(): array
159
176
]
160
177
];
161
178
}
179
+
180
+ /**
181
+ * @return UserPluginResolverContract
182
+ */
183
+ private function getResolver (): UserPluginResolverContract
184
+ {
185
+ return app (UserPluginResolverContract::class);
186
+ }
162
187
}
0 commit comments