Как обработать циклическую зависимость между модулями User и Auth?
У меня есть циклическая зависимость в моем приложении между UserModule и AuthModule.
AuthModule содержит класс AuthGuard, который использует UserService (UserService.findOne) для проверки существования пользователя, и в случае положительного ответа - пропускает его.
В то же время UserModule импортирует AuthModule, так как для UserController нам нужно использовать AuthGuard, чтобы предотвратить доступ пользователя к маршрутам, которые не предназначены для него.
Я понимаю, что это довольно классическая проблема, но, к сожалению, не смог найти ни одного хорошо обоснованного решения.
- кто-то просто помещает этот AuthGuard в UserModule.
- кто-то дублирует код из метода "UserService.findOne" в AuthGuard.
- кто-то рекомендует использовать функциональность "forwardRef" (в случае nestjs).
Какой подход наиболее подходящий в этом случае? Потому что, насколько я понимаю, "forwardRef" определенно не лучший способ решения этой проблемы."