Как проверять разрешения пользователей в nuxtjs приложении?

Нужно закрывать некоторые роуты и не показывать некоторые части компонентов в зависимости от разрешений пользователей. До этого читал про RBAC и принцип работы этой системы вроде подходит.
Первая мысль была получать после логина вместе с объектом юзера все его разрешения, сохранять во vuex, и потом через геттер проверять наличие нужного разрешения внутри компонентов и при переходе между роутами, или во время рендеринга на сервере проверять наличие токена и если он есть получать по нему юзера и сохранять в стор.
Но зачем тогда используют библиотеки типа vue-kindergarten или casl?
И можно ли как нибудь учитывать иерархию операций, например если есть операция "updatePost" и задача "updateOwnPost" у которой потомок это "updatePost", и два юзера, у одного разрешение "updatePost", у другого "updateOwnPost". Можно ли сделать чтобы при проверке в шаблоне разрешения на "updatePost" у первого проверялась только она, а у второго проверка поднималась по иерархии до "updateOwnPost"? Или это должны быть два разных разрешения и в шаблоне проверять наличие обеих?
Или для этого что-то другое используется обычно?
  • Вопрос задан
  • 804 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
Само приложение выполняется в недоверенной среде, по этому все (значимые) действия пользователя должны проверяться в доверенной среде (на сервере). Соответственно, должно быть API, по которому каждое действие проверяется. Сами ссылки можно, наверное, подгружать с сервера при старте, но все данные при переходе по ним - обязательно с проверкой на сервере каждый раз.
Ответ написан
@izheme
Познаю мир
Ну раз используешь nuxt, то почему бы не использовать официальный модуль auth? В этом модуле, когда получаешь объект пользователя можно передать scope. А потом обращаться так: this.$auth.hasScope('admin')

Если хочешь сам, то посмотри исходники. Но смысл там такой, получаешь токен, сохраняешь токен, по токену получаешь объект пользователя и хранишь его в vuex.

Логику проверки scope ты можешь сам реализовать какую захочешь, если напишешь свой геттер для vuex, который будет работать с сохраненным объектом пользователя
Ответ написан
Ваш ответ на вопрос

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

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