У меня есть части приложения (модули), которые будут запрещены для определенных людей, поэтому я хочу проверить это перед подключением и отправить несанкционированный ответ, если это необходимо.Я успешно выкидываю ошибку на сервер, но на моем интерфейсе я получаю успешный ответ, как будто ошибки не было.
Вот как выглядит мой код:
1.Функция, которая проверяетесли приложение запрещено для пользователя, отправившего запрос:
function isAppForbidden(hook) {
let forbiddenApps = [];
hook.app.services.settings.find({
query: {
$limit: 1,
$sort: {
createdAt: -1
}
}
}).then(res => {
let array = hook.params.user.hiddenApps;
if(array.indexOf('qualitydocs') >= 0 || res.data[0].forbiddenApps.indexOf('qualitydocs') >= 0) {
hook.response = Promise.reject({error: '401 Unauthorized'});
//this part is important, the rest not so much
//what im expecting to do here is just to return unauthorized response
}
});
return hook;
}
Но пока это просто выдает ошибку на бэкэнде, например:
"error: необработанный отказ в: Promise Promise {{error: {code: '401 ', сообщение:' Unauthorized '}}} code = 401, message = Unauthorized "
И интерфейс по-прежнему получает успешный ответ (200 с запрошенными данными)
И я просто вызываю эту функцию вперед хуками:
before: {
all: [
authenticate('jwt'),
hook => includeBefore(hook),
hook => isAppForbidden(hook) //here, rest is not important
],
find: [],
get: [],
create: [(hook) => {
hook.data.authorId = hook.params.user.id;
}],
update: [],
patch: [],
remove: []
},
ответ, который я ожидаю получить, выглядит примерно так: