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

PIS. Create Person authentication method request_UA

 

Мета

Даний веб-сервіс (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 з токену:

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

  • Перевірити метод автентифікації. 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. Відобразити відповідь у відповідності до специфікації.

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