Підсистема управління налаштуваннями користувачів

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

Підсистема, яка забезпечує можливості управління персональними налаштуваннями через кабінет користувача.

2. Функції підсистеми

  • Отримання налаштувань користувача

  • Активація каналу зв’язку шляхом введення / оновлення даних атрибутів каналу (наприклад: поштова адреса)

  • Підтвердження каналу зв’язку шляхом відправлення повідомлень зі згенерованими OTP-кодами

  • Деактивація каналу зв’язку

  • Валідація введених налаштувань користувача (за патерном email, відсутністю в blacklist тощо)

3. Технічний дизайн підсистеми

user settings overview.drawio

Для отримання налаштувань користувача з бізнес процесу підсистема надає метод

  • Отримання налаштувань користувача за ідентифікатором: використовується для змоги надсилати повідомлення користувачам на обрані ними канали зв’язку.

Цей метод доступний лише зсередини операційної зони реєстру для Підсистеми виконання бізнес процесів.

Для роботи з налаштуваннями через кабінет користувача надаються наступні методи:

  • Отримання налаштувань: повертає налаштування поточного користувача, який виконав вхід у систему.

  • Валідація email: валідує email, внесений у якості адреси для каналу зв’язку, за встановленим набором правил, таких як валідація за regexp, перевірка унікальності, перевірка на входження до blacklist та ін.

  • Верифікація каналу зв’язку: генерує та зберігає код підтвердження (OTP) та ініціює його відправлення підсистемою нотифікації користувачів за вказаним каналом зв’язку.

  • Активація каналу зв’язку: перевіряє вказаний користувачем код OTP та активує канал зв’язку користувача або створює нове налаштування для каналу, якщо його ще не існує.

  • Деактивація каналу зв’язку: деактивує канал зв’язку.

Ці методи роботи з налаштуваннями доступні через Підсистему управління зовнішнім трафіком, та вимагають автентифікації користувача. Робота з налаштуваннями виконується лише для поточного користувача, який виконав вхід у систему. Зміна налаштувань іншого користувача неможлива за дизайном.

3.1. Аудит та журналювання подій

Події активації/деактивації каналів зв’язку фіксуються у журналі аудиту з повним контекстом.

Тип події Службова назва Опис

USER_EVENT

USER_NOTIFICATION_CHANNEL_ACTIVATION

Активація каналу зв’язку

USER_NOTIFICATION_CHANNEL_DEACTIVATION

Деактивація каналу зв’язку

Детальніше з дизайном Підсистеми журналювання подій аудиту можна ознайомитися за посиланням.

4. Складові підсистеми

Назва компоненти Представлення в реєстрі Походження Репозиторій Призначення

Сервіс управління налаштуваннями користувачів

user-settings-service-api-deployment

origin

github:/epam/edp-ddm-user-settings-service-api

Надає API для управління налаштуваннями користувачів

Операційна БД налаштувань користувачів

operational:settings

origin

github:/epam/edp-ddm-registry-postgres/tree/main/platform-db/changesets/settings

Зберігає налаштування користувачів

Тимчасове сховище OTP

redis:channel-verification-codes

origin

-

Зберігає тимчасові коди підтвердження

5. Технологічний стек

При проектуванні та розробці підсистеми, були використані наступні технології:

6. Атрибути якості підсистеми

6.1. Observability

Підсистема управління налаштуваннями користувачів підтримує журналювання та збір метрик продуктивності для подальшого аналізу через веб-інтерфейси відповідних підсистем Платформи.

Детальніше з дизайном підсистем можна ознайомитись у відповідних розділах:

6.2. Auditability

Підсистема управління налаштуваннями користувачів фіксує значимі технічні та бізнес події, пов’язані з експлуатацією системи кінцевими користувачами використовуючи Підсистему журналювання подій аудиту.

6.3. Security

Підсистема управління налаштуваннями користувачів доступна лише через Підсистему управління зовнішнім трафіком або бізнес процес, та вимагає автентифікації користувача. Зміна налаштувань виконується лише для поточного користувача, який виконав вхід у систему. Зміна налаштувань іншого користувача неможлива за дизайном.