diff --git a/app/Http/Controllers/Auth/EveLoginController.php b/app/Http/Controllers/Auth/EveLoginController.php index 529fc74..ccb8879 100644 --- a/app/Http/Controllers/Auth/EveLoginController.php +++ b/app/Http/Controllers/Auth/EveLoginController.php @@ -32,25 +32,6 @@ class EveLoginController extends Controller 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/' . strtr($ssoUser['sub'], ['CHARACTER:EVE:' => '']) . '_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(); @@ -62,6 +43,7 @@ class EveLoginController extends Controller $token = $ssoUser->token; $refreshToken = $ssoUser->refreshToken ?? null; $expiresIn = $ssoUser->expiresIn ?? null; + $scopes = is_array($ssoUser['scp']) ? $ssoUser['scp'] : [$ssoUser['scp']]; //Add user to the database $user = User::updateOrCreate( @@ -76,8 +58,26 @@ class EveLoginController extends Controller ); //Add scopes to the scope database + EsiScope::where('character_id' => $characterId)->delete(); + foreach($scopes as $scope) { + $data = new EsiScope; + $data->character_id = $characterId; + $data->scope = $scope; + $data->save(); + } //Add Esi Token to the token database + $esiToken = EsiToken::updateOrCreate( + ['character_id' => $characterId], + [ + 'character_id' => $characterId, + 'token' => $token, + 'refresh_token' => $refreshToken, + 'expiresIn' => $ssoUser->expiresIn, + 'inserted_at' => time(), + 'expires_in' => $expiresIn, + ] + ); // Always regenerate JWT on successful login $jwtService->forceRefresh($user); @@ -87,6 +87,11 @@ class EveLoginController extends Controller return redirect()->route('dashboard'); } catch (ClientException $e) { + Log::error('EVE SSO Client Exception', [ + 'message' => $e->getMessage(), + 'exception' => get_class($e), + ]); + return redirect() ->route('login') ->with('error', 'EVE token exchange failed. Check client ID, client secret, and redirect URI.'); diff --git a/app/Models/Esi/EsiToken.php b/app/Models/Esi/EsiToken.php index a9a14fd..c438a39 100644 --- a/app/Models/Esi/EsiToken.php +++ b/app/Models/Esi/EsiToken.php @@ -33,6 +33,6 @@ class EsiToken extends Model } public function esiscopes() { - return $this->hasMany(App\Models\EsiScope::class, 'character_id', 'character_id'); + return $this->hasMany(App\Models\Esi\EsiScope::class, 'character_id', 'character_id'); } } \ No newline at end of file diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 58aabb5..9fa2e31 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -49,7 +49,6 @@ return new class extends Migration $table->string('token'); $table->string('refresh_token'); $table->integer('expiresIn'); - $table->string('user_jwt_token'); }); }