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 `deactivateForbiddenGroup` mutation.
User must have a scope **forbidden_group:write**
"""
input DeactivateForbiddenGroupInput {
  "The ID of a `ForbiddenGroup` to deactivate."
  id: ID!
  "Reason for deactivating the `ForbiddenGroup`."
  deactivationReason: String!
}

"""
Return type for `deactivateForbiddenGroup` mutation.
"""
type DeactivateForbiddenGroupPayload {
  "Deactivated `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“)

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

  • Перевірити, що forbidden_group_id вказано

    • у випадку, якщо не подано - поверніть 422 ('required property forbidden_group_id was not present')

    • у випадку, якщо не існує або не активний - повернути 404 ('not found')

  • Перевірити, що deactivation_reason вказано

    • у випадку, якщо не подано - поверніть 422 ('required property deactivation_reason was not present')

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

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

  2. Оновити дані:

    1. таблиця forbidden_groups

      1. встановити is_active = false

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

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

    2. Деактивувати кожен активний елемент у групі. Установити елемент deactivation_reason = group deactivation_reason.