Skip to content

Политики и назначение ролей

SpaceAbilityPolicy

Keystone list: одна строка на пару (space, roleKey).

ПолеОписание
spaceFK Space
roleKeyowner | editor | viewer | ext:<extensionRoleId>
grantsJSON: abilityId → boolean или { granted, config? }
updatedByUser

Кто может менять

  • setSpaceAbilityPolicy — только при space.managePolicies (по умолчанию owner).
  • Назначение extensionRoles на member — space.manageMembers.

GraphQL

graphql
query {
  spaceAbilityPolicyRows(spaceId: "…") {
    # структура из loadSpaceAbilityPolicies
  }
}

mutation {
  setSpaceAbilityPolicy(
    spaceId: "…"
    roleKey: "editor"
    grants: { "artifact.delete": false, "my-ext.approve": true }
  )
}

mutation {
  updateSpaceMemberExtensionRoles(
    spaceMemberId: "…"
    extensionRoles: ["my-ext.reviewer"]
  )
}

Effective grants

Для текущего пользователя в space:

graphql
query {
  mySpaceAbilities(spaceId: "…")
}

Возвращает плоский Record<string, boolean> — уже с учётом core role, extension roles и policy overrides.

UI хоста

  • SpaceSettingsDrawer — вкладки настроек space (проверка useSpaceAbility).
  • SpaceAbilityPolicyMatrix — матрица policy для owner (useSpaceAbilityPolicies).

Расширение может добавить свой tab через app.settingsTabs или slot, но редактирование core policy matrix — в хосте.

AI workspace для командных материалов и знаний