@Slava191

Как запретить не авторизованным пользователям операции CREATE и DELETE в mongodb?

Пишу приложение на Node.js. Хочу сделать так, чтобы добавлять данные в некоторые коллекции могли только авторизованные в системе пользователи (авторизация с помощь passport-local strategy).

Например есть коллекция вопросов пользователей "questions". Вопрос может добавить только залогиненный в системе пользователь.

Сейчас я делаю следующим образом: Перед каждым запросом пишу if(!ctx.isAuthenticated()) return;

Выглядит это так:

//страница обрабатывающая запрос

const Questions = require('../../models/questions.js');

exports.post = async (ctx, next) => {

if(!ctx.isAuthenticated()) return;

const insertedQuestion = new Questions({
text:ctx.request.body.text
})

ctx.body = await  insertedQuestion.save()

}

//questionsSchema

const mongoose = require('../libs/mongoose');

const questionsSchema = new mongoose.Schema({
    text: String,
})

module.exports = mongoose.model('Questions', questionsSchema);


Меня преследует и не покидает чувство, что такую задачу надо решать как-то иначе, например проксировать операцию save() и проверять авторизован ли пользователь там. Как лучше всего решить подобного рода задачу?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
adelkhalitov
@adelkhalitov
>
Слишком много всего в одном модуле, passport js будет авторизировать вешать сессии, acl сделает права, отработайте логику в нем. У паспорта есть метод isAutentificate, добавьте его в роуты как middleware, вообще сделайте роуты, разделите логику. Что за чушь а не код?)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы