Как в Angular правильно реализовать функционал ролей пользователя с разным интерфейсом?

Ребята всем привет. Подскжите как правильно реализовать функционал с уровнем доступа и разным интерфесом пользователей (для смежных ролей интерфейс будет одинаковый, будут лишь некоторые ограничесния).

Например:
СуперАдмин (видит все)
Админ (видит все, но не может ничего удалить)

Менеджер (видит заказы)
Помощник менеджера (не может удалять, редактировать, создавать и т.д.)

Оператор (видит обращения с службу поддержки)

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

Как я представляюю себе данную реализацию
1. у каждой роли есть свой основной роут (super-admin, admin, manager), после авторизации в зависимости от роли перенаправляем пользователя в нужно место, при помощи canActivate ограничен доступ
2. у смежных ролей общие ui, но разные права доступа и router-module
3. все компоненты планирую делать глупыми, а в pages их компоновать как нужно
4. Пока не пойму где правильно хранить сервисы и модели данных, что бы потом не запутаться

структура такая:
shared
-components
pages
- super-admin
--dashboard (админский дашборад)
--orders
--settings
- admin
--dashboard (админский дашборад)
--orders
--settings
- manager
--dashboard (менеджерский дашборад)
--orders
- manager-lite
--dashboard (менеджерский дашборад с другим набором виджетов)
--orders

Кто более опытный может подскажите правильно ли я мыслю или совсем не то. Возможно у вас был опыт реализации подобного функциоанала, и вы сможете им поделиться. За любую помощь буду благодарен.

Взможно правильнее смотреть в сторону monorepo nx.dev/angular
тогда каждая роль будет в отдельном репо и репо с базовыми переиспользуемыми компонентами

Спасибо!
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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