do not need login

This commit is contained in:
2026-09-10 16:33:13 +02:00
parent 6ca91f3fe9
commit 2ab95cebdf
12 changed files with 184 additions and 71 deletions
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\Room;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -15,11 +16,27 @@ class EmbeddedLogoutController extends Controller
{
$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,
@@ -6,7 +6,6 @@ use App\Http\Requests\ShowEmbeddedRoomRequest;
use App\Http\Resources\CurrentPlayerResource;
use App\Http\Resources\RoomResource;
use App\Models\Room;
use App\Models\User;
use App\Services\Rooms\RoomPageService;
use App\Services\Rooms\RoomParticipationService;
use Inertia\Inertia;
@@ -25,8 +24,6 @@ class EmbeddedRoomController extends Controller
$validated = $request->validated();
$user = $request->user();
abort_unless($user instanceof User, 403);
$room = Room::query()
->where('join_code', $validated['join_code'])
->firstOrFail();
@@ -34,10 +31,10 @@ class EmbeddedRoomController extends Controller
$room,
$user,
$validated['player_name'],
$request->session()->get("room_players.{$room->id}"),
);
$request->session()->put("room_players.{$room->id}", $player->id);
$request->session()->forget('embedded_login');
$pageData = $this->roomPage->prepare($room, $player, $user);
+17 -6
View File
@@ -18,7 +18,7 @@ class ShowEmbeddedRoomRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->user() !== null;
return true;
}
protected function prepareForValidation(): void
@@ -67,17 +67,28 @@ class ShowEmbeddedRoomRequest extends FormRequest
return;
}
if ($room === null || $this->user() === null) {
if ($room === null) {
return;
}
$sessionPlayerId = $this->session()->get("room_players.{$room->id}");
$existingPlayer = is_numeric($sessionPlayerId)
? $room->players()->find((int) $sessionPlayerId)
: null;
if ($existingPlayer === null && $this->user() !== null) {
$existingPlayer = $room->players()
->where('user_id', $this->user()->id)
->first();
}
$nameIsTaken = Player::query()
->where('room_id', $room->id)
->where('name', $this->input('player_name'))
->where(function ($query): void {
$query->whereNull('user_id')
->orWhere('user_id', '!=', $this->user()->id);
})
->when(
$existingPlayer !== null,
fn ($query) => $query->whereKeyNot($existingPlayer->id),
)
->exists();
if ($nameIsTaken) {