scopes(['publicData'])->redirect(); } public function handleProviderCallback(Request $request, JwtService $jwtService): RedirectResponse { $ssoUser = Socialite::driver('eveonline')->user(); $temp = [ 'id' => strtr($ssoUser['sub'], ['CHARACTER:EVE:' => '']), 'name' => $ssoUser['name'], 'nickname' => $ssoUser['name'], 'owner_hash' => $ssoUser['owner'], 'scopes' => is_array($ssoUser['scp']) ? $ssoUser['scp'] : [$ssoUser['scp']], 'expires_on' => $ssoUser['exp'], 'avatar' => 'https://image.eveonline.com/Character/' . $ssoUser->getId() . '_128.jpg', 'iss' => $ssoUser['iss'], 'region' => $ssoUser['region'], 'tier' => $ssoUser['tier'], 'token' => $ssoUser->token, 'refreshToken' => $ssoUser->refreshToken ?? null, 'expiresIn' => $ssoUser->expiresIn ?? null, ]; dd($temp); try { $ssoUser = Socialite::driver('eveonline')->user(); $characterId = strtr($ssoUser['sub'], ['CHARACTER:EVE:' => '']); $characterName = $ssoUser['name']; $characterOwnerHash = $ssoUser['owner']; $avatar = 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg'; $token = $ssoUser->token; $refreshToken = $ssoUser->refreshToken ?? null; $expiresIn = $ssoUser->expiresIn ?? null; //Add user to the database $user = User::updateOrCreate( ['character_id' => $characterId], [ 'character_name' => $characterName, 'character_owner_hash' => $characterOwnerHash, 'token' => $token, 'refresh_token' => $refreshToken, 'expiresIn' => $expiresIn, ] ); //Add scopes to the scope database //Add Esi Token to the token database // Always regenerate JWT on successful login $jwtService->forceRefresh($user); Auth::login($user, true); $request->session()->regenerate(); return redirect()->route('dashboard'); } catch (ClientException $e) { return redirect() ->route('login') ->with('error', 'EVE token exchange failed. Check client ID, client secret, and redirect URI.'); } catch (Throwable $e) { Log::error('EVE SSO callback failed', [ 'message' => $e->getMessage(), 'exception' => get_class($e), ]); report($e); return redirect() ->route('login') ->with('error', 'SSO login failed. Please try again.'); } } }