- Cria README.md na raiz com visão global e diagrama de arquitetura - Adiciona/atualiza README.md em todos os componentes: - backend (API Go) - backoffice (NestJS) - marketplace (React/Vite) - saveinmed-bff (Python/FastAPI) - saveinmed-frontend (Next.js) - website (Fresh/Deno) - Atualiza .gitignore em todos os componentes com regras abrangentes - Cria .gitignore na raiz do projeto - Renomeia pastas para melhor organização: - backend-go → backend - backend-nest → backoffice - marketplace-front → marketplace - Documenta arquitetura, tecnologias, setup e fluxo de desenvolvimento
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { Body, Controller, Get, HttpCode, HttpStatus, Post, Req, Res, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
|
|
import { FastifyReply } from 'fastify';
|
|
import { CreateUserDto } from '../users/dto/create-user.dto';
|
|
import { JwtAuthGuard } from './guards/jwt-auth.guard';
|
|
import { RefreshTokenGuard } from './guards/refresh-token.guard';
|
|
import { AuthService } from './auth.service';
|
|
import { LoginDto } from './dto/login.dto';
|
|
|
|
@ApiTags('auth')
|
|
@Controller('auth')
|
|
export class AuthController {
|
|
constructor(private readonly authService: AuthService) {}
|
|
|
|
@Post('register')
|
|
async register(@Body() dto: CreateUserDto, @Res({ passthrough: true }) reply: FastifyReply) {
|
|
return this.authService.register(dto, reply);
|
|
}
|
|
|
|
@Post('login')
|
|
@HttpCode(HttpStatus.OK)
|
|
async login(@Body() dto: LoginDto, @Res({ passthrough: true }) reply: FastifyReply) {
|
|
return this.authService.login(dto, reply);
|
|
}
|
|
|
|
@Post('refresh')
|
|
@UseGuards(RefreshTokenGuard)
|
|
@HttpCode(HttpStatus.OK)
|
|
async refresh(@Req() req: any, @Res({ passthrough: true }) reply: FastifyReply) {
|
|
const userId = req.user?.sub;
|
|
const refreshToken = req.user?.refreshToken;
|
|
return this.authService.refreshTokens(userId, refreshToken, reply);
|
|
}
|
|
|
|
@Post('logout')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
async logout(@Req() req: any, @Res({ passthrough: true }) reply: FastifyReply) {
|
|
return this.authService.logout(req.user.sub, reply);
|
|
}
|
|
|
|
@Get('profile')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
async profile(@Req() req: any) {
|
|
return req.user;
|
|
}
|
|
}
|