Files
scrum-poker-internal/app/Http/Controllers/EmbeddedLogoutController.php
T
2026-09-03 15:30:43 +02:00

46 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Room;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class EmbeddedLogoutController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request): RedirectResponse
{
$joinCode = $request->string('join_code')->trim()->upper()->toString();
$playerName = $request->string('player_name')->trim()->toString();
$room = Room::query()->where('join_code', $joinCode)->first();
$playerId = null;
if ($room !== null) {
$sessionPlayerId = $request->session()->get("room_players.{$room->id}");
if (is_numeric($sessionPlayerId)) {
$playerId = $room->players()
->whereKey((int) $sessionPlayerId)
->value('id');
}
}
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
if ($room !== null && is_numeric($playerId)) {
$request->session()->put("room_players.{$room->id}", (int) $playerId);
}
return to_route('embedded.room', [
'join_code' => $joinCode,
'player_name' => $playerName,
]);
}
}