Size: a a a

Советский Angular

2021 February 02

MA

Maxim Afanasev in Советский Angular
Stanislav Sokolov
Все что в гварде
Ну, у нас не один гард. На разные роли - разные гарды.
источник

SS

Stanislav Sokolov in Советский Angular
Ок они на что опираются? на routeSnapshot?
источник

SS

Stanislav Sokolov in Советский Angular
Сервис в который ставится routeSnapshot и он подписывается на authRole. Когда открывается гвард он бросто делает return RoleService.canActivate(routeSnapshot)
источник

SS

Stanislav Sokolov in Советский Angular
RoleService.canActivate(routeSnapshot) ставит RoleService.routeSnapshot и далее уже по стриму authRole у вас будет текущий routeSnapshot
источник

MA

Maxim Afanasev in Советский Angular
Я понял. Ты имеешь в виду вариант, когда есть один гард на всё, он получает роут и сам проверяет в соответствии с какой-то логикой, можно или нельзя этому юзеру идти на этот роут. Но у нас по-другому сделано. Есть гард, скажем DemoUserGuard и мы вешаем его на те роуты, куда можно пользователю в демо-режиме. Он просто проверяет, что уровень доступа - Demo или выше. На разделы, которые только админам доступны - другой гард, он так же проверят, что уровень доступа - Admin. Т.е. связь между роутами и правами описана в конфиге роутинга.
источник

SS

Sergei Sergeevich in Советский Angular
Maxim Afanasev
Я понял. Ты имеешь в виду вариант, когда есть один гард на всё, он получает роут и сам проверяет в соответствии с какой-то логикой, можно или нельзя этому юзеру идти на этот роут. Но у нас по-другому сделано. Есть гард, скажем DemoUserGuard и мы вешаем его на те роуты, куда можно пользователю в демо-режиме. Он просто проверяет, что уровень доступа - Demo или выше. На разделы, которые только админам доступны - другой гард, он так же проверят, что уровень доступа - Admin. Т.е. связь между роутами и правами описана в конфиге роутинга.
не очень вникал в суть вопроса, но все-равно хотел бы закинуть решение которе применяется у нас на проекте - вдруг кому пригодиться. Это один гвард для проверки доступа + прописывание параметров в data для конкретного роута:
data: { module: ModuleEnum.Tasks, permissions: ['R'] },
источник

🧤K

🧤 Andrei Kapytau in Советский Angular
Maxim Afanasev
Сейчас - да. Но не уверен, что всегда так будет. Но вложенных аутлетов точно не планируется, там они ни к чему.
Вешай директиву на все компоненты рутовые, чтобы слушать рут
источник

🧤K

🧤 Andrei Kapytau in Советский Angular
И выдели логику можно ли посещать роут в 1 сервис - hasPermissions(route)
источник

🧤K

🧤 Andrei Kapytau in Советский Angular
И вызывай из гарда и директивы
источник

MA

Maxim Afanasev in Советский Angular
Sergei Sergeevich
не очень вникал в суть вопроса, но все-равно хотел бы закинуть решение которе применяется у нас на проекте - вдруг кому пригодиться. Это один гвард для проверки доступа + прописывание параметров в data для конкретного роута:
data: { module: ModuleEnum.Tasks, permissions: ['R'] },
Да, это вроде бы неплохой вариант. Спасибо.
источник

SS

Stanislav Sokolov in Советский Angular
Maxim Afanasev
Я понял. Ты имеешь в виду вариант, когда есть один гард на всё, он получает роут и сам проверяет в соответствии с какой-то логикой, можно или нельзя этому юзеру идти на этот роут. Но у нас по-другому сделано. Есть гард, скажем DemoUserGuard и мы вешаем его на те роуты, куда можно пользователю в демо-режиме. Он просто проверяет, что уровень доступа - Demo или выше. На разделы, которые только админам доступны - другой гард, он так же проверят, что уровень доступа - Admin. Т.е. связь между роутами и правами описана в конфиге роутинга.
Я могу предлжить странный вариант но без рефактора. Собрать BaseGuard c методом canActivate {this.roleService.canActivate = () => {this.canActivate(routeSnapshot)}} в итоге в roleService.canActivate будет метод проверки текущего роута который можно дернуть по стриму
источник

MA

Maxim Afanasev in Советский Angular
Stanislav Sokolov
Я могу предлжить странный вариант но без рефактора. Собрать BaseGuard c методом canActivate {this.roleService.canActivate = () => {this.canActivate(routeSnapshot)}} в итоге в roleService.canActivate будет метод проверки текущего роута который можно дернуть по стриму
У нас роутов не много, пара десятков. И всё собрано в одном конфиге, так что переделать не сложно. Скорее всего положу инфу о правах в data, как @sergei_dev посоветовал.
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
Всем доброго утра
источник

Вキ

Вертихвост キバ 🏡🦊... in Советский Angular
источник

VV

Vladimir Verbitskiy in Советский Angular
всем привет
источник

GK

Georgii Klubnikov in Советский Angular
Доброе утро
источник

АР

Алексей Романченко... in Советский Angular
Всем доброе утро:)
источник

АР

Алексей Романченко... in Советский Angular
Georgii Klubnikov
Доброе утро
Дуэль
источник

S

Shmalala in Советский Angular
От вашего врага давно не было вестей, возможно он уже очень далеко..
Найдите кого-то, кто был тут совсем недавно
источник

АР

Алексей Романченко... in Советский Angular
Shmalala
От вашего врага давно не было вестей, возможно он уже очень далеко..
Найдите кого-то, кто был тут совсем недавно
Дуэль
источник