Skip to content

feat(roles): permissionamento granular por integração/recurso #91

@dvlexp

Description

@dvlexp

Contexto

O sistema de roles atual (configuração geral de permissões por usuário/role) funciona bem para casos simples, mas não permite controle fino sobre quais integrações ou recursos específicos cada usuário pode acessar, visualizar ou editar.

Sugestão

Manter o setup geral de roles como está (para o caso comum), mas adicionar a opção de permissionamento granular por recurso, especialmente para integrações.

Exemplos de permissões detalhadas por integração

Integrações:
├── Gmail          → [ver] [interagir] [editar config]
├── Linear         → [ver] [interagir] [editar config]
├── WhatsApp       → [ver] [interagir] [editar config]
├── Stripe         → [ver] [—] [—]
└── GitHub         → [ver] [interagir] [—]

Modelo proposto

  • Nível 1 (geral): role padrão com preset de permissões (ex: admin, editor, viewer) — comportamento atual
  • Nível 2 (granular): override por recurso/integração quando necessidade de controle mais fino
    • can_view — consegue ver a integração e seus dados
    • can_interact — consegue usar/acionar (ex: disparar rotinas, criar tickets via a integração)
    • can_configure — consegue editar credenciais, webhooks, configurações da integração

Casos de uso

  • Dar acesso a um colaborador para ver dados do Stripe mas não editar as configurações de pagamento
  • Permitir que um agente de suporte interaja com o WhatsApp mas não acesse Gmail ou Linear
  • Restringir acesso a integrações financeiras (Omie, Asaas) a roles específicas
  • Workspace multi-tenant onde diferentes usuários têm escopos distintos de ferramentas

Implementação sugerida

  • UI: na página de roles, ao selecionar um role, expandir seção "Permissões avançadas por recurso" (colapsável, opcional)
  • Storage: tabela de override role_resource_permissions (role_id, resource_type, resource_id, can_view, can_interact, can_configure)
  • Fallback: se não houver override granular, usa a permissão do role geral (sem regressão)

Prioridade sugerida

enhancement / baixa — o setup atual atende a maioria dos casos. Esta feature é relevante para workspaces com múltiplos colaboradores ou necessidade de compliance mais rígido.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions