/var/www/qr4y.com/server/delivery/api/controllers/auth
Edit: /var/www/qr4y.com/server/delivery/api/controllers/auth/reset_password_confirm.js (1795B)
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const config = require('../../../config/app.json')
const { isSet, isEmail, isPhone, isEmpty, minLength, isNumber } = require('../../utils/validator.util')
const { BadRequest, Forbidden, NotFound } = require('../../responseModels/errors')
module.exports = function ({ db, logger }) {
return async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
// разбор и валидация запроса
const { email, code, password } = req.body
if (!isSet(email) || isEmpty(email)) {
throw new BadRequest({
code: 1003,
lang: req.user?.languageCode
})
}
if (!isSet(code) || isEmpty(code)) {
throw new BadRequest({
code: 1060,
lang: req.user?.languageCode
})
}
if (!isSet(password) || isEmpty(password)) {
throw new BadRequest({
code: 1005,
lang: req.user?.languageCode
})
}
// найти пользователя
let user = await db.user.findOne({
where: { email: email }
})
if (!user) {
throw new BadRequest({
code: 1028,
lang: req.user?.languageCode
})
}
if (user.tempCode != null && user.tempCode != '' && user.tempCode != code) {
throw new BadRequest({
code: 1061,
lang: req.user?.languageCode
})
}
if (!minLength(password, 4)) {
throw new BadRequest({
code: 1011,
lang: req.user?.languageCode
})
}
// сгененировать соль и создать хэш пароля
const salt = await bcrypt.genSalt(10)
user.passwordHash = await bcrypt.hash(password, salt)
user.tempCode = ''
await user.save()
return res.status(200).json({ status: 'success' })
} catch (err) {
next(err)
}
}
}