From 732148a53373b2d68198f886c4d917698bd991b8 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 8 Jan 2026 18:26:32 +0100 Subject: [PATCH] Look into session logfiles --- src/Game/Controller/GameAdminController.php | 33 ++++++++++++++ templates/game/admin/index.html.twig | 2 +- templates/game/admin/session.html.twig | 49 +++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 templates/game/admin/session.html.twig diff --git a/src/Game/Controller/GameAdminController.php b/src/Game/Controller/GameAdminController.php index 3081f6e..aaac8ec 100644 --- a/src/Game/Controller/GameAdminController.php +++ b/src/Game/Controller/GameAdminController.php @@ -3,17 +3,25 @@ declare(strict_types=1); namespace App\Game\Controller; +use App\Game\Entity\Session; use App\Game\Repository\SessionRepository; use App\Tech\Repository\UserRepository; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Http\Attribute\IsGranted; +use Symfony\Component\DependencyInjection\Attribute\Autowire; #[Route('/admin')] #[IsGranted('ROLE_ADMIN')] final class GameAdminController extends AbstractController { + public function __construct( + #[Autowire('%kernel.project_dir%')] + private string $projectDir + ) { + } + #[Route('', name: 'game_admin_dashboard', methods: ['GET'])] public function index( UserRepository $userRepository, @@ -27,4 +35,29 @@ final class GameAdminController extends AbstractController 'sessions' => $sessions, ]); } + + #[Route('/session/{session}', name: 'game_admin_view_session', methods: ['GET'])] + public function viewSession(Session $session): Response + { + $playersLogs = []; + foreach ($session->getPlayers() as $player) { + $username = $player->getUser()->getUsername(); + $logFile = $this->projectDir . '/var/log/sessions/' . $session->getId() . '/' . $username . '.txt'; + + $logs = ''; + if (file_exists($logFile)) { + $logs = file_get_contents($logFile); + } + + $playersLogs[] = [ + 'username' => $username, + 'logs' => $logs, + ]; + } + + return $this->render('game/admin/session.html.twig', [ + 'session' => $session, + 'playersLogs' => $playersLogs, + ]); + } } diff --git a/templates/game/admin/index.html.twig b/templates/game/admin/index.html.twig index 4b96283..8378e8f 100644 --- a/templates/game/admin/index.html.twig +++ b/templates/game/admin/index.html.twig @@ -67,7 +67,7 @@ {{ session.created|date('Y-m-d H:i') }} - View Game + View Game Logs {% else %} diff --git a/templates/game/admin/session.html.twig b/templates/game/admin/session.html.twig new file mode 100644 index 0000000..b142302 --- /dev/null +++ b/templates/game/admin/session.html.twig @@ -0,0 +1,49 @@ +{% extends 'base.html.twig' %} + +{% block title %}View Session Logs - {{ session.id }}{% endblock %} + +{% block body %} +

Session: {{ session.game.name }} (#{{ session.id }})

+

Back to Dashboard

+ +
+ +
+ + {% for playerLog in playersLogs %} +
+

Logs for {{ playerLog.username }}

+
{{ playerLog.logs ?: 'No logs found for this player.' }}
+
+ {% endfor %} + + +{% endblock %}