55use Exception ;
66use Firebase \JWT \JWT ;
77use Illuminate \Container \Container ;
8- use Illuminate \Contracts \Auth \UserProvider ;
98use Illuminate \Contracts \Debug \ExceptionHandler ;
109use Illuminate \Contracts \Encryption \Encrypter ;
1110use Illuminate \Cookie \Middleware \EncryptCookies ;
1615use Laminas \Diactoros \UploadedFileFactory ;
1716use Laravel \Passport \ClientRepository ;
1817use Laravel \Passport \Passport ;
18+ use Laravel \Passport \PassportUserProvider ;
1919use Laravel \Passport \TokenRepository ;
2020use Laravel \Passport \TransientToken ;
2121use League \OAuth2 \Server \Exception \OAuthServerException ;
@@ -34,7 +34,7 @@ class TokenGuard
3434 /**
3535 * The user provider implementation.
3636 *
37- * @var \Illuminate\Contracts\Auth\UserProvider
37+ * @var \Laravel\Passport\PassportUserProvider
3838 */
3939 protected $ provider ;
4040
@@ -63,25 +63,43 @@ class TokenGuard
6363 * Create a new token guard instance.
6464 *
6565 * @param \League\OAuth2\Server\ResourceServer $server
66- * @param \Illuminate\Contracts\Auth\UserProvider $provider
66+ * @param \Laravel\Passport\PassportUserProvider $provider
6767 * @param \Laravel\Passport\TokenRepository $tokens
6868 * @param \Laravel\Passport\ClientRepository $clients
6969 * @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
7070 * @return void
7171 */
72- public function __construct (ResourceServer $ server ,
73- UserProvider $ provider ,
74- TokenRepository $ tokens ,
75- ClientRepository $ clients ,
76- Encrypter $ encrypter )
77- {
72+ public function __construct (
73+ ResourceServer $ server ,
74+ PassportUserProvider $ provider ,
75+ TokenRepository $ tokens ,
76+ ClientRepository $ clients ,
77+ Encrypter $ encrypter
78+ ) {
7879 $ this ->server = $ server ;
7980 $ this ->tokens = $ tokens ;
8081 $ this ->clients = $ clients ;
8182 $ this ->provider = $ provider ;
8283 $ this ->encrypter = $ encrypter ;
8384 }
8485
86+ /**
87+ * Determine if the requested provider matches the client's provider.
88+ *
89+ * @param \Illuminate\Http\Request $request
90+ * @return bool
91+ */
92+ protected function hasValidProvider (Request $ request )
93+ {
94+ $ client = $ this ->client ($ request );
95+
96+ if ($ client && ! $ client ->provider ) {
97+ return true ;
98+ }
99+
100+ return $ client && $ client ->provider === $ this ->provider ->getProviderName ();
101+ }
102+
85103 /**
86104 * Get the user for the incoming request.
87105 *
@@ -90,6 +108,10 @@ public function __construct(ResourceServer $server,
90108 */
91109 public function user (Request $ request )
92110 {
111+ if (! $ this ->hasValidProvider ($ request )) {
112+ return ;
113+ }
114+
93115 if ($ request ->bearerToken ()) {
94116 return $ this ->authenticateViaBearerToken ($ request );
95117 } elseif ($ request ->cookie (Passport::cookie ())) {
0 commit comments