scopes(['publicData'])->redirect(); } public function handleProviderCallback(Request $request, JwtService $jwtService): RedirectResponse { try { $ssoUser = Socialite::driver('eveonline')->user(); $temp = [ 'id' => $ssoUser->getId(), 'name' => $ssoUser['name'], 'nickname' => $ssoUser['name'], 'owner_hash' => $ssoUser['owner'], 'scopes' => is_array($ssoUser['scp']) ? $ssoUser['scp'] : [$user['scp']], 'expires_on' => $user['exp'], 'avatar' => 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg', 'iss' => $user['iss'], 'region' => $user['region'], 'tier' => $user['tier'], ]; dd($temp); Log::info('SSO User:', [$ssoUser]); $characterId = (int) $ssoUser->getId(); $characterName = $ssoUser->getName() ?: ($ssoUser->getNickname() ?? 'Unknown'); $raw = $ssoUser->user ?? []; $characterOwnerHash = $raw['CharacterOwnerHash'] ?? $raw['character_owner_hash'] ?? $raw['owner_hash'] ?? ''; $token = $ssoUser->token; $refreshToken = $ssoUser->refreshToken ?? null; $expiresIn = $ssoUser->expiresIn ?? null; $user = User::updateOrCreate( ['character_id' => $characterId], [ 'character_name' => $characterName, 'character_owner_hash' => $characterOwnerHash, 'token' => $token, 'refresh_token' => $refreshToken, 'expiresIn' => $expiresIn, ] ); // 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.'); } } }