Скачиваний:
7
Добавлен:
15.05.2024
Размер:
15.38 Mб
Скачать

3.4 Vault ldap-аутентификация

При инициализации компонента FactoryComponent вызывается метод сервиса VaultService – vaultLogin() (рисунок 12), реализация которого частично представлена на рисунке 15. На момент создания Hiring фрагмента пользователь уже аутентифицирован с помощью Identity Provider и авторизован, однако, поскольку в Hiring содержатся конфиденциальные данные, для обеспечения безопасного доступа к ним при инициализации фрагмента пользователь повторно аутентифицируется через Vault, тем самым получая доступ к зашифрованным данным Hiring микросервиса и документам абстрактного файлового хранилища File Storage.

Рисунок 15 – vaultLogin()

Форма Vault-авторизации и методы, обрабатывающие связанные с ней события, были реализованы в Host Application: на рисунке 16 изображен метод getUserToken(), вызываемый при нажатии кнопки “Submit” формы. Данный метод отправляет POST запрос с логином и паролем пользователя, возвращающий client vault токен при успешном выполнении, и генерируют событие vaultLoginSubject, на которое осуществлена подписка в Hiring микрофронтенде (рисунок 15).

Рисунок 16 – getUserToken()

После того как был получен vault client токен, для получения доступа к зашифрованным данным Hiring и File Storage в методе vaultLogin() (рисунок 15), для Hiring и File Storage соответственно, вызываются методы getWrappedToken() (рисунок 17) и initEngine(), выполняющий POST запрос для регистрации полученного токена.

Рисунок 17 – getWrappedToken()

3.5 Примеры реализации функциональности компонентов системы

3.5.1 Создание Hiring Request’а

Создание нового Hiring Request’а было реализовано следующим образом: по нажатию кнопки “Add new” открывается всплывающее окно, реализованное в компоненте “Requests in Progress”, шаблоном которого является другой Angular компонент “New Hiring Request Wizard”, который в свою очередь является родительским компонентом для “First Step” и “Second Step” компонентов. Такая реализация позволила разделить ответственность между компонентами и сохранить читаемость кода. На рисунках 18 и 19 продемонстрировано реализованное с помощью описанных выше компонентов окно Wizard’а.

Рисунок 18 – Wizard Step 1

Рисунок 19 – Wizard Step 2

Компонент “New Hiring Request Wizard” несет ответственность за реализацию следующей логики:

  • Инициализация объекта реактивной формы, ее элементов и валидаторов. Форма передается из родительского компонента дочерним с помощью использования декоратора @Input,

  • Валидация данных, заполненных на первом и втором шагах Wizard’а, а также логика появления всплывающих окон, информирующих о необходимости заполнения пустых полей,

  • Навигация между первым и вторым шагами Wizard’а,

  • Изменение размера Wizard’а при изменении размера окна (реализовано с помощью использования декоратора @HostListener, прослушивающего DOM событие “window: resize”),

  • Отмена создания Hiring Request’а,

  • Отправка формы, т. е. фактическое создание Hiring Request’а,

  • Логика проверки создаваемого Hiring Request’а на уникальность.

Компоненты “First Step” и “Second Step” определяют поля ввода Wizard’а и их параметры, реализуют логику получения значений полей выпадающих списков и логику поиска по их значениям.