diff --git a/backend/src/index.js b/backend/src/index.js index 0ed089c..04a1373 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -8781,15 +8781,34 @@ app.patch('/api/servers/:serverId/players/:steamid', auth, async (req, res) => { app.get('/api/players/:steamid', auth, async (req, res) => { try { - const p = await db.getPlayer(req.params.steamid); - if (!p) return res.status(404).json({ error: 'not_found' }); + const baseRow = await db.getPlayer(req.params.steamid); + if (!baseRow) return res.status(404).json({ error: 'not_found' }); const events = await db.listPlayerEvents(req.params.steamid, { limit: 50, offset: 0 }); const teamId = req.authUser?.activeTeamId; let teamAuth = null; if (teamId != null) { teamAuth = await loadTeamAuthProfile(teamId, req.params.steamid, { includeAlts: true }); } - res.json({ ...p, events, team_auth: teamAuth }); + + const payload = { ...baseRow, ...normaliseDbPlayer(baseRow) }; + const rawServerId = req.query?.serverId ?? req.query?.server_id ?? null; + const serverId = toServerId(rawServerId); + if ( + serverId != null && + typeof db.getServerPlayer === 'function' && + canAccessServer(req.authUser, serverId, 'players') + ) { + try { + const serverRow = await db.getServerPlayer(serverId, req.params.steamid); + if (serverRow) { + Object.assign(payload, normaliseServerPlayer(serverRow)); + } + } catch (err) { + console.warn('failed to load server player details', err); + } + } + + res.json({ ...payload, events, team_auth: teamAuth }); } catch { res.status(500).json({ error: 'db_error' }); } diff --git a/frontend/assets/modules/players.js b/frontend/assets/modules/players.js index a36bea6..714d033 100644 --- a/frontend/assets/modules/players.js +++ b/frontend/assets/modules/players.js @@ -1972,7 +1972,14 @@ if (basePlayer) renderModal(basePlayer, null); if (showLoading) setModalLoading(true); try { - const details = await ctx.api(`/players/${steamid}`); + let serverQuery = ''; + const globalState = ctx.getState?.(); + const serverIdValue = Number(state.serverId ?? globalState?.currentServerId); + if (Number.isFinite(serverIdValue) && serverIdValue > 0) { + const serverId = Math.trunc(serverIdValue); + serverQuery = `?serverId=${encodeURIComponent(serverId)}`; + } + const details = await ctx.api(`/players/${encodeURIComponent(steamid)}${serverQuery}`); if (!modalState.open || modalState.steamid !== target) return; renderModal(null, details); setModalStatus('');