@balgarot

Как переделать контроллер с sequelize под обычные запросы с бд(pg) с jwt токеном?

Делаю курсовую работу, сделал весь бек и сказали, что нельзя юзать никакие ОРМ и ничего такого, пытался сделать через запросы контроллер юзера, но так и не смог это скомпоновать с jwt токеном. Вот код, буду благодарен если кто-то поможет. если что, я имею ввиду сделать это не через секвалайз а через прямые запросы к бд, то есть через SELECT и т.д. Юзаю postgres и node.js
class UserController {
    async registration(req, res, next) {
        const {email, password, role} = req.body
        if (!email || !password) {
            return next(ApiError.badRequest('Некорректный email или password'))
        }
        const candidate = await User.findOne({where: {email}})
        if (candidate) {
            return next(ApiError.badRequest('Пользователь с таким email уже существует'))
        }
        const hashPassword = await bcrypt.hash(password, 5)
        const user = await User.create({email, role, password: hashPassword})
        const basket = await Basket.create({userId: user.id})
        const token = generateJwt(user.id, user.email, user.role)
        return res.json({token})
    }
    async login(req, res, next) {
        const {email, password} = req.body
        const user = await User.findOne({where: {email}})
        if (!user) {
            return next(ApiError.internal('Пользователь не найден'))
        }
        let comparePassword = bcrypt.compareSync(password, user.password)
        if (!comparePassword) {
            return next(ApiError.internal('Указан неверный пароль'))
        }
        const token = generateJwt(user.id, user.email, user.role)
        return res.json({token})
    }

    async check(req, res, next) {
        const token = generateJwt(req.user.id, req.user.email, req.user.role)
        return res.json({token})
    }
    
    async getAll(req, res) {
        const users = await User.findAll()
        return res.json(users)
    }
}
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы