controller update
This commit is contained in:
71
app/Http/Controllers/Auth/EveLoginController.php
Normal file
71
app/Http/Controllers/Auth/EveLoginController.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
use Throwable;
|
||||
|
||||
class EveLoginController extends Controller
|
||||
{
|
||||
public function showLogin()
|
||||
{
|
||||
return view('auth.eve');
|
||||
}
|
||||
|
||||
public function redirectToProvider(): RedirectResponse
|
||||
{
|
||||
// "eveonline" driver registered via SocialiteProviders
|
||||
return Socialite::driver('eveonline')->redirect();
|
||||
}
|
||||
|
||||
public function handleProviderCallback(Request $request): RedirectResponse
|
||||
{
|
||||
try {
|
||||
// Stateless can help in some deployments, but keep stateful by default.
|
||||
// If you run into "Invalid state" issues behind proxies, switch to ->stateless()
|
||||
$ssoUser = Socialite::driver('eveonline')->user();
|
||||
|
||||
// Socialite user basics
|
||||
$characterId = (int) $ssoUser->getId();
|
||||
$characterName = $ssoUser->getName() ?: ($ssoUser->getNickname() ?? 'Unknown');
|
||||
|
||||
// Provider-specific extra payload sometimes appears in user array / token response.
|
||||
// We’ll defensively extract what we can.
|
||||
$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,
|
||||
// "user" holds jwt - you can set it later when you add JWT issuance.
|
||||
'user' => null,
|
||||
]
|
||||
);
|
||||
|
||||
Auth::login($user, true);
|
||||
|
||||
$request->session()->regenerate();
|
||||
|
||||
return redirect()->route('dashboard');
|
||||
} catch (Throwable $e) {
|
||||
// For now: fail back to login with a generic error.
|
||||
// Later you can add logging/telemetry.
|
||||
return redirect()->route('login')->with('error', 'SSO login failed. Please try again.');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user