Прекрасная серия статей по архитектуре 👍
Когда я начал примерять этот подход на свое приложение, столкнулся с проблемой авторизации.
Во-первых что я понимаю под авторизацией — часть кода которая отвечает за получение и обновление токена доступа (не более).
Авторизация затрагивает все приложение: токен доступа передается при запросах в API, необходимо проверять его наличие прежде чем вызывать юзкейсы. Поскольку она настолько глобальна, думаю будет правильным положить в services
с такими ручками:
export type CreateAccessToken = () => Promise<string>
export type GetAccessToken = () => string;
export type RefreshAccessToken = () => Promise<string>
Далее передать его в запрос API можно в самой фиче:
/features/notes/infrastructure/api
const getNotes = createGetNotes({ request, getAccessToken, refreshAccessToken });
Но не понятно как наличие доступа работает с юзкейсами. Поскольку это не бизнес логика, то проверять токен внутри юзкейса не правильно. На сколько я понял выше юзкейса находится UI, а там эту проверку думаю не стоит делать. Плюс есть юзкейсы которые запускаются по событиям, получается надо где-то отлавливать нужные события и создавать новые "авторизованные события".
Буду рад любым референсам где можно подчерпнуть информации по этому поводу