Controle de Acesso Baseado em Regras
Funções, Permissões e Usuários no OmniCRM
OmniCRM utiliza controle de acesso baseado em funções (RBAC): pessoas (Usuários) são atribuídas a uma ou mais Funções, e cada Função é um conjunto de Permissões. As Permissões são a menor unidade de acesso (por exemplo, view_customer, create_inventory). O acesso efetivo de um usuário é a união das permissões de todas as funções atribuídas.
Propósito
RBAC permite:
- Proteção de Dados --- Usuários só veem e fazem o que estão autorizados a fazer.
- Adequação Operacional --- Funções refletem funções de trabalho (Admin, Suporte, Finanças, Administrador de Cliente).
- Administração Simples --- Conceda acesso atribuindo funções; evite a microgestão por usuário.
- Isolamento de Inquilinos --- Permissões de "ver próprio ..." limitam a visibilidade aos dados de cliente/inquilino do próprio usuário.

Como Usuários, Funções e Permissões se Encaixam
- Usuários --- Pessoas reais que fazem login no OmniCRM.
- Permissões --- Capacidades atômicas (por exemplo,
view_customer,delete_product). - Funções --- Conjuntos nomeados de permissões (por exemplo, Admin, Suporte, Finanças).
- Atribuição --- Usuários recebem uma ou mais funções; as permissões se agregam.

A autenticação prova quem você é (JWT, chave da API ou IP na lista branca). A autorização (funções/permissões) decide o que você pode fazer.
Gerenciando Usuários
O sistema de gerenciamento de usuários do OmniCRM permite que administradores criem e gerenciem usuários da equipe (administradores, agentes de atendimento ao cliente), visualizem e modifiquem funções de usuários, redefinam senhas, gerenciem autenticação de dois fatores e controlem o acesso dos usuários.
Tipos de Usuários
Usuários Clientes - Criados via autoinscrição ou por administradores. Atribuídos automaticamente à função "Cliente". Esses usuários acessam o portal de autoatendimento para gerenciar seus serviços, visualizar uso, pagar faturas, etc.
Usuários da Equipe - Criados por administradores com permissões apropriadas. Podem ser atribuídos a funções como Admin, Suporte, Finanças, etc. Esses usuários acessam a interface do CRM para gerenciar clientes, provisionar serviços, lidar com faturamento, etc.
Usuários Administrativos - Usuários com a permissão admin. Têm acesso total ao sistema, incluindo gerenciamento de usuários, gerenciamento de funções e todos os endpoints protegidos.
O usuário administrativo inicial é criado pela equipe do Omnitouch quando o sistema é implantado.
Adicionando Novos Usuários (Administradores e CSAs)
Administradores podem criar novos usuários da equipe através da interface da Web ou da API.
Via Interface da Web
- Navegue até Usuários e Funções - Acesse a interface de gerenciamento de usuários a partir do menu de administração
- Clique em "Adicionar Usuário" - Abre o formulário de criação de usuário

- Preencha os Detalhes do Usuário:
- Nome de Usuário - Nome de usuário único para login (obrigatório)
- Email - Endereço de email do usuário (obrigatório, deve ser único)
- Senha - Senha temporária (obrigatório, o usuário deve alterá-la no primeiro login)
- Primeiro Nome - Primeiro nome do usuário (obrigatório)
- Nome do Meio - Nome do meio do usuário (opcional)
- Último Nome - Último nome do usuário (obrigatório)
- Número de Telefone - Número de telefone de contato (opcional)
- Função - Selecione uma ou mais funções para atribuir (obrigatório)
- Contato do Cliente - Opcionalmente vincule o usuário a um registro de contato do cliente (para usuários clientes)
- Clique em "Criar Usuário" - O usuário é criado e pode imediatamente fazer login com as credenciais fornecidas
- Usuário recebe notificação - Opcionalmente envie um email de boas-vindas com instruções de login
Melhores Práticas:
- Use uma senha temporária como
TempP@ssw0rd!e exija que o usuário a altere no primeiro login - Atribua funções apropriadas com base na função de trabalho (veja os Designs Típicos de Função abaixo)
- Ative a 2FA para todo o pessoal administrativo e de suporte
- Vincule usuários clientes ao seu registro de contato do cliente para escopo de dados adequado
Via API
Crie um usuário programaticamente:
Endpoint: POST /auth/users
Permissão Necessária: admin
Corpo da Requisição:
{
"username": "john.smith",
"email": "john.smith@company.com",
"password": "TempP@ssw0rd!",
"first_name": "John",
"middle_name": "D",
"last_name": "Smith",
"phone_number": "+61412345678",
"role": "Support"
}
Resposta:
{
"id": 123,
"username": "john.smith",
"email": "john.smith@company.com",
"first_name": "John",
"last_name": "Smith",
"roles": ["Support"],
"created": "2025-01-04T10:30:00Z"
}
Atribuindo Múltiplas Funções:
Usuários podem ter múltiplas funções. As permissões são aditivas (união de todas as permissões das funções atribuídas).
Para atribuir múltiplas funções, inclua-as na requisição:
{
"username": "jane.doe",
"email": "jane.doe@company.com",
"password": "TempP@ssw0rd!",
"first_name": "Jane",
"last_name": "Doe",
"role": "Support,Finance"
}
Ou use o endpoint de atribuição de função após a criação do usuário:
POST /auth/roles/{role_id}/users/{user_id}
Visualizando e Pesquisando Usuários
Listar Todos os Usuários (Admin):
GET /auth/users
Retorna uma lista paginada de todos os usuários com suas funções e informações básicas.
Pesquisar Usuários:
GET /auth/users/search?search={query}&filters={"role":["Support"]}&page=1&per_page=50
Filtrar por:
- Nome da função
- Domínio do email
- Status ativo/excluído
- Status de 2FA ativado
- Data do último login
Obter Usuário Específico:
GET /auth/users/{user_id}
Retorna detalhes completos do usuário, incluindo:
- Informações pessoais
- Funções atribuídas e permissões efetivas
- Status de 2FA
- Último login e informações de sessão
- Contato do cliente vinculado (se aplicável)
Criando e Gerenciando Funções
As funções são coleções de permissões que podem ser atribuídas a usuários. Em vez de atribuir permissões individualmente a cada usuário, você cria funções que agrupam permissões relacionadas e atribui essas funções aos usuários.
Criando uma Nova Função
Via Interface da Web:
- Navegue até Usuários e Funções → aba Funções
- Clique em "Criar Função"
- Insira os detalhes da função:
- Nome - Nome curto e descritivo (por exemplo, "Tier2_Support")
- Descrição - Explique o propósito e as responsabilidades da função
- Clique em "Criar"
- A função é criada sem permissões; adicione permissões na próxima etapa
Via API:
Endpoint: POST /auth/roles
Permissão Necessária: admin
Requisição:
{
"name": "Tier2_Support",
"description": "Equipe de suporte de nível 2 com acesso elevado de provisionamento"
}
Resposta:
{
"id": 45,
"name": "Tier2_Support",
"description": "Equipe de suporte de nível 2 com acesso elevado de provisionamento",
"permissions": [],
"users": []
}
Adicionando Permissões a uma Função
Uma vez que uma função é criada, atribua permissões para definir o que os usuários com essa função podem fazer.
Via Interface da Web:
- Navegue até Usuários e Funções → aba Funções
- Clique no nome da função para visualizar os detalhes
- Na seção Permissões, clique em "Adicionar Permissão"
- Selecione uma ou mais permissões da lista
- Clique em "Adicionar" - As permissões são imediatamente atribuídas


Via API:
Endpoint: POST /auth/roles/{role_id}/permissions
Requisição:
{
"permission_id": 123
}
Ou adicione múltiplas permissões:
{
"permission_ids": [123, 124, 125]
}
Exemplo: Criando uma Função "Especialista em Provisionamento"
Essa função pode visualizar clientes, gerenciar serviços e provisionar:
-
Crie a função:
POST /auth/roles
{
"name": "Provisioning_Specialist",
"description": "Pode provisionar serviços e gerenciar serviços de clientes"
} -
Adicione permissões:
POST /auth/roles/45/permissions
{
"permission_ids": [
1, # view_customer
20, # view_customer_service
21, # create_customer_service
22, # update_customer_service
30, # view_provision
31, # create_provision
40, # view_inventory
50, # view_product
]
}
Removendo Permissões de uma Função
Via Interface da Web:
- Navegue até os detalhes da função
- Na lista de Permissões, clique no botão "X" ou "Remover" ao lado da permissão
- Confirme a remoção
Via API:
Endpoint: DELETE /auth/roles/{role_id}/permissions/{permission_id}
Exemplo:
DELETE /auth/roles/45/permissions/31
Isso remove a permissão create_provision da função.
Editando Detalhes da Função
Atualize o nome ou a descrição da função:
Via Interface da Web:
- Navegue até Usuários e Funções → aba Funções
- Clique na função para editar
- Modifique o nome ou a descrição da função
- Clique em "Salvar"

Via API:
Endpoint: PUT /auth/roles/{role_id}
{
"name": "Senior_Support",
"description": "Equipe de suporte sênior com acesso total ao cliente"
}
Excluindo uma Função
Aviso: Excluir uma função a remove de todos os usuários atribuídos. Certifique-se de que os usuários tenham funções alternativas ou perderão o acesso.
Via API:
DELETE /auth/roles/{role_id}
Melhor Prática: Em vez de excluir, considere arquivar ou renomear funções que não são mais necessárias.
Atribuindo Funções a Usuários
Durante a Criação do Usuário:
Inclua a função na requisição de criação do usuário (veja "Adicionando Novos Usuários" acima).
Para Usuários Existentes:
Via Interface da Web:
- Navegue até Usuários e Funções → aba Usuários
- Clique no usuário para editar
- Na seção Funções, selecione/deselecione funções
- Clique em "Salvar"

Via API:
Atualize as funções do usuário:
Endpoint: PUT /auth/users/{user_id}
{
"role": "Support,Finance"
}
Ou atribua uma única função a um usuário via endpoint de função:
Endpoint: POST /auth/roles/{role_id}/users/{user_id}
Visualizando Atribuições de Função
Todos os usuários em uma função:
GET /auth/roles/{role_id}/users
Retorna uma lista de todos os usuários atribuídos a essa função.
Todas as funções de um usuário:
GET /auth/users/{user_id}
A resposta inclui um array roles com todas as funções atribuídas.
Gerenciando Senhas de Usuário
OmniCRM fornece múltiplos métodos para gerenciamento de senhas, dependendo do contexto.
Redefinição de Senha pelo Usuário
Usuários que esqueceram sua senha podem redefini-la por conta própria através da página de login:
- Clique em "Esqueceu a Senha" na página de login
- Insira o endereço de email - O sistema envia um email de redefinição de senha
- Verifique o email - O email contém um link seguro de redefinição com token (válido por 1 hora)
- Clique no link - Abre o formulário de redefinição de senha
- Insira a nova senha - Deve atender aos requisitos de complexidade de senha:
- Mínimo de 8 caracteres
- Pelo menos uma letra maiúscula
- Pelo menos uma letra minúscula
- Pelo menos um número
- Pelo menos um caractere especial
- Enviar - A senha é imediatamente atualizada; o usuário pode fazer login com a nova senha
Fluxo da API:
-
Solicitar redefinição:
Endpoint:
POST /auth/forgot_password{
"email": "user@example.com"
}O sistema gera um token de redefinição e envia um email.
-
Redefinir com token:
Endpoint:
POST /auth/reset_password{
"token": "abc123...",
"new_password": "NewSecureP@ssw0rd!"
}
Redefinição de Senha pelo Administrador
Administradores podem redefinir a senha de um usuário sem exigir verificação por email. Isso define uma senha temporária que o usuário deve alterar no próximo login.
Via Interface da Web:
- Navegue até Usuários e Funções → Usuários
- Encontre o usuário e clique no botão "Redefinir Senha"
- Insira uma senha temporária
- Clique em "Redefinir"
- Notifique o usuário sobre sua senha temporária (via canal seguro)
- O usuário deve alterar a senha no próximo login
Via API:
Endpoint: POST /auth/users/{user_id}/admin_reset_password
Permissão Necessária: admin
Requisição:
{
"new_password": "TempP@ssw0rd!",
"force_change": true
}
Parâmetros:
new_password- Senha temporária a ser definidaforce_change(opcional) - Se verdadeiro, o usuário deve alterar a senha no próximo login
Usuário Altera Sua Própria Senha
Usuários autenticados podem alterar sua própria senha a partir de seu perfil:
Endpoint: POST /auth/change_password
Requisição:
{
"current_password": "OldP@ssw0rd!",
"new_password": "NewSecureP@ssw0rd!"
}
O sistema valida a senha atual antes de permitir a alteração.
Segurança da Senha
- As senhas são criptografadas usando bcrypt (segurança do werkzeug)
- Nunca são armazenadas em texto simples
- Tokens de redefinição expiram após 1 hora
- Tentativas de login falhadas podem acionar bloqueio de conta (configurável)
- O rastreamento do histórico de senhas impede reutilização (configurável)
- Requisitos de complexidade são aplicados
Gerenciando Autenticação de Dois Fatores (2FA)
OmniCRM suporta autenticação de dois fatores baseada em TOTP para segurança aprimorada. Administradores podem habilitar, desabilitar e redefinir 2FA para usuários.

Habilitando 2FA para um Usuário
Via Interface da Web:
- Navegue até Usuários e Funções → Usuários
- Clique no usuário para visualizar detalhes
- Na seção Segurança, clique em "Habilitar 2FA"
- O sistema gera:
- Segredo TOTP (código QR exibido)
- 10 códigos de backup (uso único)
- O usuário escaneia o código QR com o aplicativo autenticador (Google Authenticator, Authy, etc.)
- O usuário insere o código de verificação do aplicativo para confirmar a configuração
- O usuário salva os códigos de backup em local seguro
- 2FA agora está habilitado; necessário para todos os futuros logins

Via API:
-
Gerar segredo TOTP:
Endpoint:
POST /2fa/enable/user/{user_id}Resposta:
{
"totp_secret": "JBSWY3DPEHPK3PXP",
"qr_code_url": "otpauth://totp/OmniCRM:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=OmniCRM",
"backup_codes": [
"12345678",
"23456789",
"34567890",
...
]
} -
Verificar configuração:
Endpoint:
POST /2fa/verify-setup/user/{user_id}{
"code": "123456"
}Retorna
{"verified": true}em caso de sucesso.
Fluxo de Login 2FA
Uma vez que 2FA está habilitado, o processo de login muda:
- O usuário insere nome de usuário e senha
- O sistema valida as credenciais
- Se válidas, solicita o código 2FA
- O usuário insere o código do aplicativo autenticador OU código de backup
- O sistema verifica o código
- Em caso de sucesso, o usuário é autenticado

Códigos de Backup:
- 10 códigos gerados durante a configuração do 2FA
- Uso único apenas (consumidos após uso)
- Usados se o aplicativo autenticador não estiver disponível
- Podem ser regenerados pelo usuário ou administrador
Verificando Código 2FA
Endpoint: POST /2fa/verify/user/{user_id}
{
"code": "123456"
}
Aceita ambos:
- Código TOTP (6 dígitos do aplicativo autenticador)
- Código de backup (8 dígitos da lista de códigos de backup)
Regenerando Códigos de Backup
Se um usuário esgotar os códigos de backup ou os perder, gere novos:
Via Interface da Web:
- Navegue até os detalhes do usuário
- Clique em "Regenerar Códigos de Backup"
- Exiba ou envie novos códigos para o usuário
- Os códigos antigos são invalidados
Via API:
Endpoint: POST /2fa/backup-codes/regenerate/user/{user_id}
Resposta:
{
"backup_codes": [
"98765432",
"87654321",
"76543210",
...
]
}
Redefinição 2FA pelo Administrador
Se um usuário perder o acesso ao seu aplicativo autenticador e todos os códigos de backup, um administrador pode desabilitar e reabilitar 2FA.
Via Interface da Web:
- Navegue até Usuários e Funções → Usuários
- Clique no usuário
- Clique no botão "Redefinir 2FA"
- Confirme a redefinição
- 2FA é desabilitado; o usuário pode fazer login apenas com a senha
- Oriente o usuário a configurar 2FA novamente com um novo segredo
Via API:
Endpoint: POST /2fa/admin/disable/user/{user_id}
Permissão Necessária: admin
Isso desabilita completamente 2FA para o usuário:
- Segredo TOTP limpo
- Códigos de backup limpos
- Flag
is_2fa_enableddefinida como falsa
O usuário pode então reabilitar 2FA para obter um novo segredo e códigos de backup.
Redefinição de 2FA pelo Usuário (Novo Dispositivo)
Se um usuário obtiver um novo dispositivo, mas ainda tiver acesso aos códigos de backup:
Endpoint: POST /2fa/reset-for-new-device/user/{user_id}
{
"backup_code": "12345678"
}
O sistema valida o código de backup, em seguida, gera um novo segredo TOTP e códigos de backup. O usuário pode configurar o aplicativo autenticador em seu novo dispositivo.
Melhores Práticas de 2FA
- Exigir 2FA para todo o pessoal administrativo e de suporte
- Armazenar códigos de backup de forma segura (gerenciador de senhas ou nota segura)
- Regenerar códigos de backup após usar vários
- Usar aplicativos autenticadores respeitáveis (Google Authenticator, Authy, Microsoft Authenticator)
- Documentar procedimentos de redefinição de 2FA para a equipe de suporte
- Auditar o uso de 2FA - monitorar quais usuários têm 2FA habilitado
Atualizando Informações do Usuário
Administradores podem atualizar os detalhes do usuário a qualquer momento.
Via Interface da Web:
- Navegue até Usuários e Funções → Usuários
- Clique no usuário para editar
- Modifique quaisquer campos editáveis:
- Primeiro nome, nome do meio, último nome
- Endereço de email (exige verificação)
- Número de telefone
- Funções
- Vinculação de contato do cliente
- Clique em "Salvar"
Via API:
Endpoint: PUT /auth/users/{user_id}
{
"first_name": "Jane",
"last_name": "Doe-Smith",
"email": "jane.doesmith@newcompany.com",
"phone_number": "+61498765432",
"role": "Support,Finance"
}
Mudanças de Email:
Quando o email é alterado, o novo email é marcado como pendente até ser verificado:
- O campo
pending_emailarmazena o novo email - Email de verificação enviado para o novo endereço
- O usuário clica no link para verificar
- O campo
emailé atualizado para o novo valor - A flag
email_verifiedé definida como verdadeira
Excluindo Usuários
OmniCRM utiliza exclusões suaves para usuários - eles são marcados como excluídos, mas não removidos do banco de dados. Isso preserva trilhas de auditoria e dados históricos.
Excluindo um Usuário
Via Interface da Web:
- Navegue até Usuários e Funções → Usuários
- Encontre o usuário a ser excluído
- Clique no botão "Excluir"
- Confirme a exclusão
- O usuário é imediatamente desconectado e não pode fazer login novamente
Via API:
Endpoint: DELETE /auth/users/{user_id}
Permissão Necessária: admin
O Que Acontece:
- A flag
deletedé definida comoTrue - O timestamp
deleted_até registrado - O usuário não pode fazer login
- Todas as sessões ativas são invalidadas
- O usuário ainda aparece nos logs de auditoria e registros históricos
- Dados vinculados (contatos de clientes, atividades) são preservados
Visualizando Usuários Excluídos
Filtrar usuários excluídos:
GET /auth/users/search?filters={"deleted":[true]}
Restaurando um Usuário Excluído
Se um usuário foi excluído por engano, administradores podem restaurá-lo:
Endpoint: PUT /auth/users/{user_id}
{
"deleted": false
}
Isso limpa a flag deleted e permite que o usuário faça login novamente.
Nota: A senha do usuário permanece inalterada, para que ele possa usar sua senha anterior.
Excluindo Permanentemente um Usuário
Aviso: Isso é irreversível e remove todos os dados do usuário do banco de dados.
Não exposto via UI. Apenas disponível via acesso direto ao banco de dados por razões de conformidade (por exemplo, solicitações de exclusão de dados GDPR).
Melhores Práticas para Exclusão de Usuários
- Exclusão suave por padrão - Preserva trilhas de auditoria
- Documentar razões para exclusão - Adicionar nota no log de atividades antes de excluir
- Transferir propriedade - Reatribuir tickets abertos e tarefas do usuário antes de excluir
- Revisar acesso - Garantir que nenhum processo crítico dependa do usuário
- Arquivar dados - Exportar o histórico de trabalho do usuário, se necessário
- Notificar equipes relevantes - Informar gerentes/colegas sobre a exclusão
Catálogo de Permissões
As permissões geralmente seguem padrões CRUD:
view\_\*--- ler/navegarcreate\_\*--- criar/adicionarupdate\_\*--- editar/modificardelete\_\*--- excluir/remover
Algumas entidades também incluem variantes "ver próprio ..." que restringem a visibilidade aos dados do próprio cliente/inquilino do usuário.

Global / Administrativo
admin--- Acesso administrativo total (gerenciar usuários, funções e permissões; acessar todos os endpoints protegidos).can_impersonate--- Agir temporariamente como outro usuário (auditado; para suporte/resolução de problemas).
Clientes e Registros Relacionados
- Cliente
view_customer,create_customer,update_customer,delete_customer- Escopo próprio: ver próprio cliente
- Site do Cliente
view_customer_site,create_customer_site,update_customer_site,delete_customer_site- Escopo próprio: ver próprio site do cliente
- Contato do Cliente
view_customer_contact,create_customer_contact,update_customer_contact,delete_customer_contact- Escopo próprio: ver próprio contato do cliente
- Atributo do Cliente (veja
Atributos do Cliente)
view_customer_attribute,create_customer_attribute,update_customer_attribute,delete_customer_attribute- Escopo próprio: ver próprio atributo do cliente
- Tag do Cliente (veja
Tags do Cliente)
view_customer_tag,create_customer_tag,update_customer_tag,delete_customer_tag- Escopo próprio: ver própria tag do cliente
- Serviço do Cliente
view_customer_service,create_customer_service,update_customer_service,delete_customer_service- Escopo próprio: ver próprio serviço do cliente
- Atividade do Cliente
view_customer_activity,create_customer_activity,update_customer_activity,delete_customer_activity- Escopo próprio: ver própria atividade do cliente
Faturamento
- Cartão Stripe
view_customer_stripe_card,create_customer_stripe_card,update_customer_stripe_card,delete_customer_stripe_card- Escopo próprio: ver próprio cartão stripe do cliente
- Transações
view_customer_transaction,create_customer_transaction,update_customer_transaction,delete_customer_transaction- Escopo próprio: ver própria transação do cliente
- Faturas
view_customer_invoice,create_customer_invoice,update_customer_invoice,delete_customer_invoice- Escopo próprio: ver própria fatura do cliente
Comunicações
view_communication,create_communication,update_communication,delete_communication- Escopo próprio: ver própria comunicação
Inventário e Modelos
- Inventário
view_inventory,create_inventory,update_inventory,delete_inventory- Escopo próprio: ver próprio inventário
- Modelo de Inventário
view_inventory_template,create_inventory_template,update_inventory_template,delete_inventory_template- Escopo próprio: ver próprio modelo de inventário
Produtos
view_product,create_product,update_product,delete_product
Transmissão de Células (CBC)
view_cbc_message,create_cbc_message,update_cbc_message,delete_cbc_message
Provisionamento
- Provisionar
view_provision,create_provision,update_provision,delete_provision- Escopo próprio: ver próprio provisionamento
- Evento de Provisionamento
view_provision_event,create_provision_event,update_provision_event,delete_provision_event
Acesso "Ver Próprio"
As permissões "ver próprio ..." restringem as leituras (e opcionalmente edições, onde implementadas) aos dados associados ao próprio cliente/inquilino do usuário. Por exemplo, uma função Administrador de Cliente pode gerenciar os contatos, sites, faturas e serviços de seu inquilino, mas não pode ver outros inquilinos.
Designs Típicos de Funções
Função Permissões Típicas Notas
Administrador do Sistema admin, opcionalmente can_impersonate; além de CRUD amplo conforme necessário Controle total sobre usuários/funções/permissões
Suporte view_customer, view_customer_service, view_communication, view_provision; atualizações opcionais Adicione can_impersonate se permitido
Finanças view_customer_invoice, view_customer_transaction, view_product; opcional create_customer_invoice Leitura pesada; escrita limitada
Administrador de Cliente "ver próprio ..." em clientes, sites, contatos, serviços, inventário, faturas, transações, comunicações, provisionamento Gestão com escopo de inquilino
Auditor Apenas Leitura Ampla view_* apenas Sem criar/atualizar/excluir
: Exemplo de Funções e Permissões Incluídas (resumo)
Gerenciando Funções e Permissões via API
Todos os endpoints requerem permissão admin.
Listar permissões
Endpoint: GET /auth/permissions
Criar uma permissão (raro)
Endpoint: POST /auth/permissions
Corpo da Requisição:
{
"name": "view_example",
"description": "Acesso somente leitura a objetos de exemplo"
}
Listar funções
Endpoint: GET /auth/roles
Criar uma função
Endpoint: POST /auth/roles
Corpo da Requisição:
{
"name": "Support",
"description": "Equipe de suporte de nível 1"
}
Adicionar uma permissão a uma função
Endpoint: POST /auth/roles/{role_id}/permissions
Corpo da Requisição:
{
"permission_id": 123
}
Remover uma permissão de uma função
Endpoint: DELETE /auth/roles/{role_id}/permissions/{permission_id}
Atribuindo Funções a Usuários
Criar um usuário com função
Endpoint: POST /auth/users
Corpo da Requisição:
{
"username": "sara",
"email": "sara@example.com",
"password": "TempP@ssw0rd!",
"first_name": "Sara",
"last_name": "Ng",
"phone_number": "+61...",
"role": "Support"
}
Atualizar a função de um usuário
Endpoint: PUT /auth/users/{user_id}
Corpo da Requisição:
{
"role": "Finance"
}
Listar usuários (somente Admin)
Endpoint: GET /auth/users
Impersonificação (Controlada)
- Necessário:
can_impersonateouadmin
Iniciar impersonificação
Endpoint: POST /auth/impersonate
Corpo da Requisição:
{ "user_id": 42 }
Parar impersonificação
Endpoint: POST /auth/stop_impersonation
Melhores Práticas
- Menor privilégio primeiro. Comece com funções mínimas; adicione permissões conforme necessário.
- Prefira "ver próprio ...". Use permissões com escopo de inquilino para funções voltadas para o cliente.
- Mantenha funções estáveis. Atualize as permissões das funções quando as funcionalidades mudarem---não edite cada usuário.
- Audite regularmente. Revise quem tem
adminoucan_impersonate.
FAQ
Um usuário pode ter várias funções? Sim. As permissões são aditivas.
Preciso de permissões personalizadas? Geralmente não. O catálogo embutido cobre a maioria das necessidades.
Como as regras "ver próprio ..." sabem o que é meu? Elas avaliam a ligação entre seu usuário/contato e seu cliente (inquilino).