Есть ли библиотека, совместимая с Hapi для мелкомасштабных разрешений ACL/User?

Глядя на использование HapiJS в качестве нашего сервера API. Нам нужны мелкие разрешения пользователя, например. "Пользователь A может редактировать поле B" "Пользователь C может просматривать поле D" для данной модели/ресурса.

Прежде чем мы начнем создавать что-то, я искал, если что-то подобное уже сделано, что совместимо с Hapi.

Ответ 2

Я только что прочитал статью, в которой разрешения ACL проверяются с использованием встроенных областей.

Вот ссылка на указанную статью: https://blog.andyet.com/2015/06/16/harnessing-hapi-scopes/

И чтобы быстро возобновиться (используя пример из приведенной выше ссылки), вы получаете объект пользователя, который выглядит так:

{
    "username": "han",
    "scope": ["door-trash-compactor"]
}

Сфера может быть сгенерирована независимо от того, что поддерживает ваш ACL для этого пользователя. В этом случае у вас есть ресурс door с id trash-compactor, который можно проверить следующим образом:

server.route({
    method: 'GET',
    route: '/doors/{door_id}',
    config: {
        handler: function (request, reply) {
            reply(request.params.door_id ' door is closed');
        },
        auth: {
            scope: ['door-{params.door_id}']
        }
    }
});

Область door-{params.door_id} будет переведена на door-trash-compactor, которая затем будет проверена. Запрос Хана на дверь уплотнителя мусора будет действительным, и он получит сообщение door is closed.

Сообщение в блоге хорошо написано (гораздо лучше, чем это резюме) и описывает это более подробно - рекомендовал бы прочитать.