2023-06-26 11:50:34 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
**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, "Использует для перевода валюты с одного курса на другой")
|
2023-06-26 11:52:00 +00:00
|
|
|
|
Rel(CustomerService, PaymentService, "Использует для проведения оплаты, получения платёжной ссылки и уведомления об успешной/не_успешной оплате")
|
2023-06-26 11:50:34 +00:00
|
|
|
|
Rel(CustomerService, HubadminService, "Использует для получения информации о тарифах")
|
|
|
|
|
|
|
|
|
|
Rel_R(CustomerService, CustomerDB, "Читает/Записывает")
|
|
|
|
|
Rel_R(AuthService, AuthServiceDB, "Читает/Записывает")
|
|
|
|
|
Rel_R(CbrfService, CbrfServiceDB, "Читает/Записывает")
|
|
|
|
|
Rel_R(PaymentService, PaymentServiceDB, "Читает/Записывает")
|
|
|
|
|
Rel_R(HubadminService, HubadminServiceDB, "Читает/Записывает")
|
|
|
|
|
```
|