protecting routes for auth

This commit is contained in:
2026-05-08 15:16:04 +02:00
parent 965aa80fe0
commit 7c9e9c5001
15 changed files with 273 additions and 58 deletions

View File

@@ -1,15 +1,30 @@
import { prisma } from '../prisma.js'
export const getOffers = async(req, res) => {
const offers = await prisma.oferta.findMany()
res.json(offers)
}
export const createOffer = async (req, res) => {
const { titulo, empresa, ubicacion, salario, contrato, descripcion } = req.body;
const authorId = req.user.id
if (!titulo || !empresa || !ubicacion || !salario || !contrato || !descripcion) return res.status(400).json({ error: ""})
if (titulo.length < 3 || titulo.length > 64) { return res.status(400).json({ error: 'El titulo debe tener entre 3 y 64 caracteres' })}
if (empresa.length < 2 || empresa.length > 32) { return res.status(400).json({ error: 'El nombre de la empresa debe tener entre 2 y 32 caracteres' })}
if (ubicacion.length < 3 || ubicacion.length > 16) { return res.status(400).json({ error: 'La ubicacion debe tener entre 3 y 16 caracteres' })}
if (salario.length < 3 || salario.length > 10) { return res.status(400).json({ error: 'El salario debe seguir este formato: 500€ o 20€/hora' })}
if (descripcion.length < 10 || descripcion.length > 256) { return res.status(400).json({ error: 'La descripcion debe tener entre 10 y 256 caracteres' })}
const contratosValidos = ["freelance", "completo", "medio"]
if (!contratosValidos.includes(contrato)) return res.status(400).json({ error: "contrato no valido" })
try {
const offer = await prisma.oferta.create({
data: {
titulo, empresa, ubicacion, salario, descripcion
titulo, empresa, ubicacion, salario, descripcion, contrato, authorId
}
})
res.status(201).json(offer)