/
kochkatech
/
CorpGame
Обзор
Документация
Войти
/
kochkatech
/
CorpGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
master
backend/src/team/team.controller.ts
43 строки
2 KB
kochkareal
chore: добавлен .gitattributes, нормализованы переносы строк (LF везде, кроме .bat/.cmd)
06 авг 2026, 15:18
06 авг 2026, 15:18
c25ef1b
Код
Авторство
О чём код?
import { Body, Controller, Get, Post, Res, UseGuards } from '@nestjs/common'; import { Response } from 'express'; import { TeamService } from './team.service'; import { signTeamToken } from '../auth/jwt.util'; import { TeamGuard } from '../auth/team.guard'; import { CurrentTeam } from '../auth/current-team.decorator'; import { TeamTokenPayload } from '../auth/jwt.util'; import { EventsService } from '../events/events.service'; const COOKIE_OPTIONS = { httpOnly: true, sameSite: 'lax' as const, maxAge: 12 * 60 * 60 * 1000 }; @Controller('team') export class TeamController { constructor( private readonly team: TeamService, private readonly events: EventsService, ) {} @Post('join') async join( @Body('publicCode') publicCode: string, @Body('joinCode') joinCode: string, @Body('nickname') nickname: string, @Res({ passthrough: true }) res: Response, ) { const { session, team, player } = await this.team.join(publicCode, joinCode, nickname); const token = signTeamToken({ teamId: team.id, sessionId: session.id, playerId: player.id }); res.cookie('team_token', token, COOKIE_OPTIONS); return { sessionId: session.id, sessionStatus: session.status, team, player }; } @UseGuards(TeamGuard) @Get('me') me(@CurrentTeam() current: TeamTokenPayload) { return this.team.getState(current.sessionId, current.teamId); } @UseGuards(TeamGuard) @Get('events') events_(@CurrentTeam() current: TeamTokenPayload) { return this.events.recent(current.sessionId, 50); } }