Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Ціль

Даний веб-сервіс дозволяє деактивувати елементи заборонених груп.

Ключові моменти

  1. Даний сервіс на graphQl, який використовується лише з панелі адміністрування.

  2. Тільки авторизований та уповноважений працівник національної служби охорони здоров’я з відповідною областю може здійснювати пошук у заборонених групах.

  3. Елементи слід деактивувати з накладанням цифрового підпису.

  4. Один або кілька елементів можна деактивувати одночасно.

  5. Тільки активні елементи можуть бути деактивовані.

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

Code Block
languagegraphql
"""
Input for `deactivateForbiddenGroupItems` mutation.
User must have a scope **forbidden_group:write**
"""
input DeactivateForbiddenGroupItemsInput {
    "Forbidden group identifier."
    forbiddenGroupId: ID!
    "List with IDs of `ForbiddenGroupService` objects. Each object should be active and belong to the `forbiddenGroupId`"
    forbiddenGroupServiceIds: [ID!]
    "List with IDs of `ForbiddenGroupCode` objects. Each object should be active and belong to the `forbiddenGroupId`"
    forbiddenGroupCodeIds: [ID!]
}

"""
Return type for `DeactivateForbiddenGroupItems` mutation.
"""
type DeactivateForbiddenGroupItemsPayload {
  "Updaed `ForbiddenGroup`."
  forbiddenGroup: ForbiddenGroup
}

Авторизація

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

    • у випадку помилки - повернути 401 (“Invalid access token”) in case of validation fails

  • Перевірити, чи термін дії токену не минув

    • у випадку помилки - повернути 401 (“Invalid access token”)

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

    • повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:write”) в разі невалідних скоупів

Перевірити юридичну організацію

  • Отримати client_id з токену.

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

    • у випадку помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:write”)

  • Перевірити статус юридичної особи (status = ACTIVE)

    • у випадку помилки - повернути 409 ('client_id refers to legal entity that is not active')

Перевірити цифровий підпис

  • Перевірити, що запит підписано

    • у випадку помилки - повернути 422 (“document must be signed by 1 signer but contains 0 signatures”)

  • Перевірити, що цифровий підпис дійсний

  • Перевірити чи належить цифровий пілпис користувачу

    • Перевірити, що ЕДРПОУ з цифрового підпису та party.tax_id відповідають один одному

      • у випадку помилки - повернути 409 (“Signer DRFO doesn't match with requester tax_id“)

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

  1. Перевірити6 що вказано хоча б одне поле з масива: forbidden_group_service_ids, forbidden_group_code_ids

...

  • у випадку помилки - повернути 422 ('required property deactivation_reason was not present')

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

  1. Зберегти підписаний контент до медіа-сховища

  2. Для кожного id в масиві forbidden_group_service_ids або forbidden_group_code_ids:

    1. встановити is_active = false у відповідній таблиці (дивитися /wiki/spaces/FORBIDDEN/pages/2087190529)

    2. встановити deactivation_reason = $.deactivation_reason

    3. встановити updated_at, updated_by

  3. Очистити кеш