ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Мета

Даний веб-сервіс (WS) розроблено для запиту на створення методу автентифікації для персони.

Специфікація

Apiary

Авторизація

  • Перевірити валідність токену доступу

    • Повернути (401, 'Invalid access token') в разі неуспішних перевірок

  • Перевірити, що токен дійсний

    • в разі помилки - повернути (401, 'Invalid access token')

  • Перевірити скоупи користувача на можливість виконання даної дії (scope = 'authentication_method_request:write_pis')

    • Повернути (403, 'Your scope does not allow to access this resource. Missing allowances: authentication_method_request:write_pis') в разі невалідних скоупів

  • Перевірити, що токен містисть person_id

    • в разі помилки - повернути (401, 'Invalid access token')

Перевірити персону

  • Отримати person_id з токену (x-person-id хедер)

  • Перевірити, що статус персони активний (status = ‘active' & is_active = 'true’)

    • в разі помилки - повернути 404 ('not found')

Перевірити довірену особу та взаємозв'язок (опційно)

Якщо персона юридично не дієздатна - система має переконатись, що її запит на метод автентифікації персони створено довіреною особою та є зареєстрований та верифікований взаємозв'язок.

Отримати applicant_person_id з токену, порівняти цого до person_id з токену:

  • якщо рівний - перевірити, що персона має бути не авторизована як довірена особа, що вона не відповідає наступним правилам:

    • вік персони < no_self_registration_age глобальному параметру;

    • що вік персони між значенням no_self_registration_age та person_full_legal_capacity_age глобальних параметрів та персона не має документу з типом з конфігураційного параметру PIS_PERSON_LEGAL_CAPACITY_DOCUMENT_TYPES;

    • вік персони > person_full_legal_capacity_age глобального параметру та існує хоча б один взаємозв'язок активний та погоджений з довіреною особою з персоною (викорисовуючи наступний процес /wiki/spaces/PCAB/pages/17415995422 з person_id = person з запиту - очікується відповідь :ok, :approved)

      • в разі помилки - повернути 409 (‘Request must be authorized by confidant person’)

  • Якщо не рівний -

    • помилка - повернути 409 (‘Only THIRD_PERSON authentication method is allowed’)

Перевірити запит

  • Перевірити метод автентифікації. il.authentication_method_request.auth_method.type = OTP

    • в разі помилки - повернути 403 ('Only for OTP authentication method is allowed')

  • phone_numberобов'язковий

    1. в разі помилки - повернути 422 ('required property %{property} was not present')

Перевірити, чи має бути відправлений код верифікації OTP

  • перевірити використаний ліміт для цього номеру телефону в таблиці person_authentication_methods  з ended_at пусто або > now() & тип = OTP > N

    1. в разі помилки - повернути 422 ('This phone number is present more than #{phone_number_auth_limit.limit} times in the system')

  • Отримати значення з конфігураційного параметру PIS_VALIDATE_ALL_PHONES

    • якщо встановлено false - перевірити, що телефон з поля authentication_methods має бути верифікований (номер не існує в таблиці verified_phones в базі даних verifications)

    • якщо встановлено true - верифікований номер телефону по OTP

Сервісна логіка

  1. Створити запит на метод автентифікації в il.authentication_method_request з

    • status = NEW

    • action = INSERT

    • authentication_method = $authentication_method

    • authentication_method_current =

    • authentication_method_id = $authentication_method_id

    • channel = PIS

  2. Якщо потрібен OTP верифікації

    • Викликати Initialize OTP для генерації одноразового паролю та направити його на номер клієнта.

    • Знайти запити, де person_id = person.id та authentication_method_requests.status = NEW, то

    • Змінити статус всіх знайдених authentication_method_requests на CANCELED.

    • то Approve Person authentication method request

  3. Якщо OTP верифікації не потрібен

    • Знайти запити, де person_id = person.id та authentication_method_requests.status = NEW, то

    • Змінити статус по всім знайденим authentication_method_requests на CANCELED.

    • Оновити mpi.person_authentication_methods

      • метод автентифікації персони, що був до цього, стає inactive - встановити ended_at = now() (отримати поточні дату та час) та is_active = false

      • встановити для нового auth_method в person_auth_methods. Встановити поля - type,phone_numer, alias(якщо є в запиті)

    • Оновити запит методу автентифікації

      • Змінити статус сутності в il.authentication_method_request на COMPLETED

      • Встановити updated_at - now() (Отримати поточі дату та час)

  4. Відобразити відповідь у відповідності до специфікації.

  • No labels