// src/routes/auth/index.ts
import { Router } from 'express'
import User from '../../models/user'
import { sign } from '../../auth/tokens'
import { LoginSchema, SignupSchema } from './schemas'
const router = Router()
router.post('/signup', async (request, response) => {
const input = SignupSchema.parse(request.body)
const existing = await User.findBy('email', input.email.toLowerCase())
if (existing) {
return response.status(409).json({ error: 'Email already in use' })
}
const user = await User.register({
email: input.email,
name: input.name,
password: input.password
})
const token = sign(user.id)
response.status(201).json({
token,
user: { id: user.id, email: user.email, name: user.name }
})
})
router.post('/login', async (request, response) => {
const input = LoginSchema.parse(request.body)
const user = await User.findBy('email', input.email.toLowerCase())
if (!user || !(await user.verifyPassword(input.password))) {
return response.status(401).json({ error: 'Invalid email or password' })
}
const token = sign(user.id)
response.json({
token,
user: { id: user.id, email: user.email, name: user.name }
})
})
export default router