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

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 Current »

Ціль

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

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

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

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

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

  4. Деактивувати можна лише активні групи.

  5. Якщо деактивувати групу, деактивуються також усі включені елементи.

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

"""
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.

  • No labels