generated from PenaSide/GolangTemplate
3.9 KiB
3.9 KiB
UseCase авторизации пользователя (Пользователь существует / Пароль верный / Аккаунт не существует):
plantuml participant Frontend participant CustomerService participant AuthService participant HubAdminService participant PaymentService participant CBRFService database AuthServiceDB database ServiceDB Frontend -> AuthService : Запрос на авторизацию пользователя AuthService -> AuthServiceDB : Запрос на существования пользователя AuthService <-- AuthServiceDB : Ответ: пользователь существует AuthService -> AuthService : Проверка пароля (пароль верный) Frontend <-- AuthService : Ответ успешной авторизации: \n- refreshToken в onlyHttp куках\n- accessToken в body \n- информация о пользователе Frontend -> Frontend : Записывает accessToken в store (Redux / Recoil) Frontend -> Service : Запрос на получение аккаунта \n- accessToken должен храниться \nв Authorization Header \nиспользуя метод Bearer <accessToken> Service -> ServiceDB : Проверка на \nсуществование аккаунта Service <-- ServiceDB : Ответ: \nаккаунта не существует Frontend <-- Service : Ошибка: аккаунта не существует
## Relationships
plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml Container(CustomerService, "Customer Service", "Golang", "Сервис customer") Container(AuthService, "Auth Service", "NodeJS", "Сервис единой авторизации") Container(CbrfService, "CBRF Worker Service", "Golang", "Сервис по выдаче и перевода курсов валют") Container(PaymentService, "Payment Service", "Golang", "Платёжный сервис") Container(HubadminService, "Hub admin Service", "NodeJS", "Севрис управления тарифами и привелегиями") ContainerDb(CustomerDB, "Customer Service Database", "MongoDB", "Хранит информацию об аккаунтах") ContainerDb(AuthServiceDB, "Auth Service Database", "MongoDB", "Хранит информацию о пользователях и сессиях") ContainerDb(CbrfServiceDB, "CBRF Worker Database", "MongoDB", "Хранит информацию о курсах валют") ContainerDb(PaymentServiceDB, "Payment Service Database", "MongoDB", "Хранит информацию о платежах и их состоянии") ContainerDb(HubadminServiceDB, "Hubadmin service Database", "MongoDB", "Хранит информацию о тарифах и привелегиях") Rel(CustomerService, AuthService, "Использует для получения актуальной информации о пользователе") Rel(CustomerService, CbrfService, "Использует для перевода валюты с одного курса на другой") Rel(CustomerService, PaymentService, "Использует для проведения оплаты (получения платёжной ссылки и уведомления об успешной/не_успешной оплате)") Rel(CustomerService, HubadminService, "Использует для получения информации о тарифах") Rel_R(CustomerService, CustomerDB, "Читает/Записывает") Rel_R(AuthService, AuthServiceDB, "Читает/Записывает") Rel_R(CbrfService, CbrfServiceDB, "Читает/Записывает") Rel_R(PaymentService, PaymentServiceDB, "Читает/Записывает") Rel_R(HubadminService, HubadminServiceDB, "Читает/Записывает") SHOW_FLOATING_LEGEND() Lay_Distance(LEGEND(), AuthService, 1)