Использование оператора ИЛИ с охраной - PullRequest
0 голосов
/ 01 ноября 2018

То, что я пытаюсь сделать, это что-то функционально подобное (конечно, приведенный ниже код - чепуха):

@UseGuards( AuthGuard || AdminAuthGuard )

Я хочу, чтобы мои охранники были ложными, только если оба вернули ложь. По сути, я бы хотел, чтобы мои средства проверки подлинности были похожи на операторы OR, потому что конечная точка может быть активирована несколькими независимыми источниками, и каждый из них имеет свою собственную систему аутентификации.

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

Кто-нибудь знает, как реализовать подобное поведение?

PS: Также в качестве дополнительной сложности я использую RoleGuards с одной из двух систем входа в систему. Таким образом, RoleGuards будет применяться, например, если AdminAuth имеет значение true, но не применяется, как правило, Auth имеет значение true.

РЕШЕНИЕ: Вот как я решил эту проблему (я до сих пор не знаю, есть ли простой способ сделать это. Если вы, я хочу знать;)). В моей оригинальной защите я экспортировал функцию validateRequest. Я создал auth guard, который называется adminOrNormalAuthGuard. Там я импортирую функции и реализую необходимую логику.

Что касается roleGuards, все, что я делаю, это импортирую эти функции проверки. Если логин в норме => вернуть true. Если специальный логин => результат зависит от логики охраны.

...