Управління налаштуваннями реєстру на рівні регламенту

Сторінка технічної документації є баченням майбутньої реалізації, актуальність якого може бути застарілою.

Сценарії адміністрування налаштувань реєстру

  • Налаштування заголовку реєстру для відображення у кабінетах користувачів

  • Налаштування теми інтерфейсу кабінетів користувачів

  • Налаштування поштової скриньки для відправлення повідомлень команді підтримки користувачів кабінетів

  • Налаштування переліку доменів, поштові адреси яких є забороненими для використання у реєстрі

  • Валідація змін до регламенту налаштувань згідно визначених правил

Сценарії використання налаштувань реєстру

  • Відображення заголовку реєстру у кабінетах користувачів

  • Відображення заголовку реєстру на сторінках аутентифікації користувачів

  • Застосування теми до інтерфейсу кабінетів користувачів

  • Використання визначеної адміністратором поштової скриньки при відправленні повідомлень до служби підтримки через кабінети користувачів

  • Використання переліку заблокованих доменів для валідації поштових адрес, які вносяться через UI-форми бізнес-процесів

  • Використання переліку заблокованих доменів для валідації поштових адрес, які вносяться через профіль Кабінету Громадянина

  • Використання переліку заблокованих доменів для валідації поштової скриньки команди підтримки реєстру, яка задається адміністратором

Поточний дизайн управління налаштуваннями

registry-settings-baseline
Налаштування регламенту реєстру: registry-gerrit/<registry-regulation>.git/global-vars/camunda-global-system-vars.yml
supportEmail: help@support.com
themeFile: white-theme.js

В поточній реалізації існує ряд недоліків:

  • Нецільове використання global-vars/camunda-global-system-vars.yml для налаштування supportEmail та themeFile реєстру

  • Неможливість налаштувати перелік заборонених доменів для поштових адрес на рівні регламенту

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

Цільовий дизайн управління налаштуваннями

registry-settings

Компоненти системи та їх призначення в рамках дизайну рішення

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

Компонент Службова назва Призначення / Суть змін

Регламент реєстру

registry-regulation

Розширення регламенту налаштуваннями title, blacklist та реструктуризація

Пайплайн публікації регламенту

registry-jenkins

Застосування змін згідно реструктуризації файлів конфігурації та ресурсів:

  • UploadGlobalVarsChanges.groovy

  • UpdateThemeLoginPage.groovy

Кабінет посадової особи

officer-portal

Відображення назви реєстру та адреси служби підтримки. Валідація поштових адрес на сторінках UI-форм

Кабінет громадянина

citizen-portal

Відображення назви реєстру та адреси служби підтримки. Валідація поштових адрес на сторінках UI-форм та профілі користувача

Сторінка аутентифікації громадянина

keycloak-ds-login-page-citizen

Відображення назви реєстру та темування

Сторінка аутентифікації посадової особи

keycloak-ds-login-page-officer

Відображення назви реєстру та темування

Аутентифікатор громадян

keycloak-ds-citizen-authenticator

Налаштування назви реєстру та теми

Аутентифікатор посадових осіб

keycloak-ds-officer-authenticator

Налаштування назви реєстру та теми

Сервіс валідації даних UI-форм

form-submission-validation

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

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

user-settings-service

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

Сервіс відправлення повідомлень

notification-service

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

CLI-утиліта валідації цілісності регламенту

registry-regulations-validator-cli

Валідація налаштувань реєстру

Регламент налаштувань реєстру

На даний момент в регламенті присутній конфігураційний файл <registry-regulation>/settings.xml з налаштуваннями Фабрики Даних. Розглянути доцільність його перевикористання та об’єднання з загальними налаштуваннями реєстру на рівні регламенту.
В рамках проведення редизайну, необхідно створити структуру та відповідну конфігурацію реєстру за замовчуванням у шаблоні репозиторію регламенту empty_regulation_template.
Структура регламенту реєстру
Figure 1. Структура регламенту реєстру
Канонічний вигляд конфігурації реєстру settings/settings.yml
settings:
  general:
    title: "<Назва реєстру>"
    themeFile: "white-theme.js"
    contacts:
      support:
        email: "support@registry.gov.ua"
  validation:
    email:
      blacklist:
        domains:
          - 'mail.ru'
          - 'internet.ru'
          - 'list.ru'
          - 'bk.ru'
          - 'inbox.ru'
          - 'mail.ua'
          - 'yandex.ru'
          - 'yandex.ua'
          - 'mail.yandex.ru'
          - 'mail.yandex.ua'
          - 'ya.ru'
          - 'ya.ua'
Канонічний вигляд конфігурації констант бізнес-процесів global-vars/camunda-global-system-vars.yml
camundaVar1: "<constant to be used in business process>"
camundaVar2: "<constant to be used in business process>"

Валідація регламенту налаштувань реєстру

В рамках редизайну, необхідно відкорегувати JSON-схему для валідації global-vars/camunda-global-system-vars.yml:

  • Видалити supportEmail та themeFile

  • Встановити "additionalProperties": true для вільного визначення констант для використання у межах бізнес-процесів

В рамках реалізації рішення, необхідно розширити CLI-утиліту registry-regulations-validator-cli валідації регламенту додатковими правилами:

  • Перевірка settings/settings.yml на відповідність JSON-схемі

  • Валідація settings.general.contacts.support.email значення згідно актуальному переліку в settings.validation.email.blacklist.domains

JSON-схема для валідації файлу налаштувань settings/settings.yml
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "settings": {
      "type": "object",
      "properties": {
        "general": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "minLength": 1
            },
            "themeFile": {
              "type": "string",
              "enum": [
                "white-theme.js",
                "dark-theme.js"
              ]
            },
            "contacts": {
              "type": "object",
              "properties": {
                "support": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "format": "email"
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "email"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "support"
              ]
            }
          },
          "additionalProperties": false,
          "required": [
            "title",
            "themeFile",
            "contacts"
          ]
        },
        "validation": {
          "type": "object",
          "properties": {
            "email": {
              "properties": {
                "blacklist": {
                  "type": "object",
                  "properties": {
                    "domains": {
                      "type": "array",
                      "minItems": 1,
                      "uniqueItems": true,
                      "items": {
                        "type": "string",
                        "minLength": 1
                      }
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "domains"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "blacklist"
              ]
            }
          },
          "additionalProperties": false,
          "required": [
            "email"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "general",
        "validation"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "settings"
  ]
}

Реструктуризація службових ресурсів реєстру

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

Канонічний вигляд "registry-settings-js" ConfigMap налаштувань кабінетів користувачів
const REGISTRY_SETTINGS = {
  "settings": {
    "general": {
      "title": "<title>",
      "themeFile": "<white|dark-theme.js>",
      "contacts": {
        "support": {
          "email": "<email>"
        }
      }
    },
    "validation": {
      "email": {
        "blacklist": {
          "domains": [
            'mail.ru',
            'internet.ru',
            'list.ru',
            'bk.ru',
            'inbox.ru',
            'mail.ua',
            'yandex.ru',
            'yandex.ua',
            'mail.yandex.ru',
            'mail.yandex.ua',
            'ya.ru',
            'ya.ua'
          ]
        }
      }
    }
  }
};
Канонічний вигляд "environment-js" ConfigMap налаштувань кабінетів користувачів
const ENVIRONMENT_VARIABLES = {
  kibanaUrl: 'https://...',
  redashUrl: 'https://...',
  signWidgetUrl: 'https://...'
};
Канонічний вигляд "registry-settings" ConfigMap налаштувань бекенд-сервісів
settings:
  general:
    title: "<Назва реєстру>"
    themeFile: "white-theme.js"
    contacts:
      support:
        email: "support@registry.gov.ua"
  validation:
    email:
      blacklist:
        domains:
          - 'mail.ru'
          - 'internet.ru'
          - 'list.ru'
          - 'bk.ru'
          - 'inbox.ru'
          - 'mail.ua'
          - 'yandex.ru'
          - 'yandex.ua'
          - 'mail.yandex.ru'
          - 'mail.yandex.ua'
          - 'ya.ru'
          - 'ya.ua'
Канонічний вигляд "bpms-camunda-global-system-vars" ConfigMap налаштувань бекенд-сервісу bpms
camunda:
  system-variables:
    const_camundaVar1: "const_value"
    const_camundaVar2: "const_value"

Застосування налаштувань до аутентифікаторів кабінетів

Необхідно розширити:

  • Логіку registry-jenkins Пайплайну публікації регламенту таким чином, щоб налаштування themeFile та title для конфігурації реєстрових аутентифікаторів dso-citizen-authenticator та dso-officer-authenticator застосовувались з регламенту registry-gerrit/<registry-regulation>.git/settings/settings.yml через внесення змін до відповідних KeycloakAuthFlow ресурсів

dso-citizen-authenticator
Figure 2. Налаштування dso-citizen-authenticator
dso-officer-authenticator
Figure 3. Налаштування dso-officer-authenticator

Міграція налаштувань при оновленні

При оновленні існуючих реєстрів, необхідно:

  • Розширити структуру регламенту відповідно до канонічного вигляду

  • Створити settings/settings.yml файл з налаштуваннями реєстру, як зазначено в розділі Регламент налаштувань реєстру

  • Встановити значення "settings.general.title" для реєстру

  • Встановити значення "title" для dso-citizen-authenticator та dso-officer-authenticator

  • Встановити "settings.general.contacts.support.email" значенням з поточної конфігурації global-vars/camunda-global-system-vars.yml поля supportEmail та видалити налаштування з camunda-global-system-vars.yml

  • Встановити "settings.general.themeFile" значенням з поточної конфігурації global-vars/camunda-global-system-vars.yml поля themeFile та видалити налаштування з camunda-global-system-vars.yml