import type { FastifyPluginAsync } from 'fastify'; import { ZodError } from 'zod'; import { loginSchema, registerSchema } from './auth.schema'; import * as authService from './auth.service'; const authRoutes: FastifyPluginAsync = async (fastify) => { fastify.post('/auth/register', async (request, reply) => { try { const body = registerSchema.parse(request.body); const user = await authService.registerUser(body); const token = fastify.jwt.sign({ sub: user.id }); return reply.status(201).send({ data: { user, token } }); } catch (err: any) { if (err instanceof ZodError) { return reply.status(400).send({ error: 'Dados inválidos.', details: err.errors }); } return reply.status(400).send({ error: err.message }); } }); fastify.post('/auth/login', async (request, reply) => { try { const body = loginSchema.parse(request.body); const user = await authService.loginUser(body); const token = fastify.jwt.sign({ sub: user.id }); return reply.send({ data: { user, token } }); } catch (err: any) { if (err instanceof ZodError) { return reply.status(400).send({ error: 'Dados inválidos.', details: err.errors }); } return reply.status(401).send({ error: err.message }); } }); }; export default authRoutes;