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

@@ -16,7 +16,7 @@ export const login = async (req, res) => {
const user = await prisma.user.findFirst({ where: { email } });
if (!user || !await bcrypt.compare(password, user.password)) {
return res.status(400).json({ error: 'Invalid credentials' })
return res.status(400).json({ error: 'Credenciales erroneas' })
}
// Generate JWT
@@ -35,31 +35,32 @@ export const login = async (req, res) => {
export const register = async (req, res) => {
// Get data
const {username, email, password } = req.body
const {username, email, password, type } = req.body
// Check is not empty
if (!username || !email || !password) {
return res.status(400).json({ error: 'All fields are required' })
return res.status(400).json({ error: 'Todos los campos son obligatorios' })
}
// Validate data
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (username.length < 3 ||username.length > 14) { return res.status(400).json({ error: 'Username must be between 3 and 14 characters' })}
if (email.length > 30 || !emailRegex.test(email)) { return res.status(400).json({ error: 'Email is not valid' })}
if (password.length < 6 || password.length > 32) { return res.status(400).json({ error: 'Password must be between 6 and 32 characters' })}
if (username.length < 3 ||username.length > 14) { return res.status(400).json({ error: 'El nombre de usuario debe tener entre 3 y 14 caracteres' })}
if (email.length > 30 || !emailRegex.test(email)) { return res.status(400).json({ error: 'Correo electronico no valido' })}
if (password.length < 6 || password.length > 32) { return res.status(400).json({ error: 'La contraseña debe tener entre 6 y 32 caracteres' })}
if (type !== "candidato" && type !== "reclutador") { return res.status(400).json({ error: 'El tipo de cuenta no es valido' })}
// Check email and username doesnt exists
const userExists = await prisma.user.findFirst({
where: {
OR: [ { email }, { username } ]
OR: [ { email } ]
}
});
// If username or email exists, send error
if (userExists) {
return res.status(409).json({
error: 'User already exists'
error: 'Este usuario ya existe'
})
}
@@ -68,7 +69,7 @@ export const register = async (req, res) => {
// Create user
const user = await prisma.user.create({
data: { username, email, password: hashedPassword, type: "candidato" }
data: { username, email, password: hashedPassword, type }
})
// Generates token