router.post('/register',
[
check('email', 'Некоректный email').normalizeEmail().isEmail(),
check('phone', 'Некоректный номер телефона').isMobilePhone(),
check('password', 'Минимальный пароль 6 символов').isLength({ min: 6 })
],
async (req, res) => {
try {
const errors = validationResult(req)
if (!errors.isEmpty()) {
consola.error({ message: `Server error: Некоректные данные при регистрации ${errors.array()}`, badge: true })
return res.status(400).json({
errors: errors.array(),
message: 'Некоректные данные при регистрации'
})
}
const { firstname, surname, patronymic, city, university, teacher, email, phone, password, role, projectsCounter } = req.body
const findEmail = await User.findOne({ email })
const findPhone = await User.findOne({ phone })
if (findEmail || findPhone) {
consola.error({ message: `Server error: Такой пользователь уже существует`, badge: true })
return res.status(400).json({ message: 'Такой пользователь уже существует' })
}
const hashedPass = await bcrypt.hash(password, 12)
const user = new User({ firstname, surname, patronymic, city, university, teacher, email, phone, password: hashedPass, role, projectsCounter })
await user.save()
return res.status(201).json({ message: 'Вы успешно зарегистрированы' })
} catch (e) {
consola.error({ message: `Server error: ${e.message}`, badge: true })
return res.status(500).json({ message: 'Сервер упал при регистрации' })
}
})