@iordania

Инициализация контента для определённой роли пользователя?

Всем привет!
Задача стоит следующая: в зависимости от роли пользователя, показывать разный контент в навигации и сам контент.
Реализовано: На основании приватных роутов, либо допускаю пользователя к странице или же нет (вывожу сообщение что нет прав)... это происходит после аутентификации, где один из параметров я передаю редирект на нужную страницу, после перехода на эту страницу происходит fetch данных для неё... тут всё просто!

А как быть с навигацией ? есть сайдбар и хедер - и там и там действия и ссылки для разных пользователей разные...
Сейчас при рендере общей обёртки (HOC) админки у меня посылается допалнительный запрос для проверки прав чтобы отрендерить нужное в навигации...
Смущает то что я шлю 1 запрос для навигации и потом такой же для рендера контента на странице...
Можно ли как-то реализовать это попроще ?
  • Вопрос задан
  • 425 просмотров
Пригласить эксперта
Ответы на вопрос 5
profesor08
@profesor08
Это называется натягивание практик пригодных для серверного рендеринга на SPA. Что мешает при загрузке получить статус пользователя и использовать его где нужно, и отображать что нужно? При запросе на получение контента, обновлять статус если случилась ошибка.
Ответ написан
Комментировать
Leo5878
@Leo5878
Улыбчивай, люблю учить и учиться
Почему бы не проверть это один раз и просто не вызывать для этого две функции? Вызываешь их в тот момент, когда ты точно уверен, что этому пользователю можно это отдать. Или сохраняешь результат проверки и отпрвлаяешь аргументом туда, где собирается контент
Ответ написан
@xenonhammer
ну можно например роль записать в куки, и обращаться туда за чтобы узнать уровень допуска. Это исключит ненужные запросы. Подключите контекст и добавьте туда 1 поле с уровнем допуска, и после того как человек откроет сайт, из кук возьмется уровень прав и запишется в контекст. Вот теперь у пользователя напротяжении жизнь приложения всегда будет информация об уровне допуска и можно всегда узнать нужно ли пускать пользователя по этому адресу или нет, не обращаясь еще куда либо
Ответ написан
@Kirill-Gorelov
С ума с IT
Я бы смотрел в сторону паттерна "мост"
Ответ написан
Комментировать
DiSayThis
@DiSayThis
Web Разработчик
ну я делал нечто похожее
я сделал в отдельном файле список роутов, как объектов с параметрами link, title, exact и accessRoles
и в accessRoles был массив ролей которым можно переходить по роуту, например: ["root","admin"]
пихнул роль в куки при авторизации,
а все роуты в один большой массив,
отдельно роуты для меню навигации в другой массив, тк мне не нужны все роуты в навигации
и перед тем как вернуть роуты или отрендерить меню навигации я как бы фильтрую массив по роли в куках и возвращаю только то что подходит

ну авось тебе поможет.
Ответ написан
Ваш ответ на вопрос

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

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