namespace App\Providers; use App\Models\ApiUser; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\UserProvider; use Illuminate\Contracts\Encryption\EncryptException; use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Http; use Tymon\JWTAuth\Facades\JWTAuth; class ApiUserProvider implements UserProvider { public function retrieveById($identifier) { //identifier value is 0. die('retrieveById'); } public function retrieveByToken($identifier, $token) { die('retrieveByToken'); } public function updateRememberToken(Authenticatable $user, $token) { die('updateRememberToken'); } public function retrieveByCredentials(array $credentials) { if (! array_key_exists('login', $credentials)) {return null;} if (! array_key_exists('password', $credentials)) {return null;} $response = $this->loginWithApi($credentials['login'], $credentials['password']); // if (!$response->ok()) {return null;} $userData = $response->json(); $payload['name'] = $userData['data']['player']['name']; try { $identifier = \json_encode($payload, \JSON_THROW_ON_ERROR); $payload['id'] = Crypt::encryptString($identifier); } catch (\JsonException $exception) { return null; } catch (EncryptException $exception) { return null; } return new ApiUser($payload); } public function validateCredentials(Authenticatable $user, array $credentials) { return true; } private function loginWithApi(string $login, string $password): Response { return } }