# yaml-language-server: $schema=https://api.cerbos.dev/latest/cerbos/policy/v1/Policy.schema.json
---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
  version: default
  resource: ad_account
  schemas:
    principalSchema:
      ref: cerbos:///principal.json
    resourceSchema:
      ref: cerbos:///identity_and_tenant_owned_resource.json
  importDerivedRoles:
    - audience_development_multitenancy_roles
    - fansifter_multitenancy_roles
    - resource_owner
  rules:
  - name: view
    actions: ["view"]
    derivedRoles: [
      "audience_development_admin",
      "audience_development_audience_manager",
      "fansifter_can_connect_ad_accounts",
      "fansifter_can_share_ad_campaign_audiences",
    ]
    effect: EFFECT_ALLOW
  - name: assign
    actions: ["assign"]
    derivedRoles: [
      "audience_development_client",
      "audience_development_admin",
      "fansifter_can_connect_ad_accounts",
    ]
    condition:
      match:
        expr: P.id == R.attr.identity_uuid
    effect: EFFECT_ALLOW
  - name: delete
    actions: ["delete"]
    derivedRoles: [
      "identity_owned_resource",
      "audience_development_admin",
      "audience_development_client",
      "fansifter_can_connect_ad_accounts",
    ]
    effect: EFFECT_ALLOW
  - name: edit
    actions: ["edit"]
    derivedRoles: [
      "fansifter_can_connect_ad_accounts",
    ]
    effect: EFFECT_ALLOW
