ConfiguraçãoUsuários & permissões

Usuários e permissões — /config/usuarios

Tela onde você convida o time, atribui roles e gerencia o acesso. Permissão necessária: usuarios:view.

Estrutura da tela

  • Título “Usuários e Permissões”
  • Subtítulo “{N} usuário(s) na organização”
  • Botão Convidar (UserPlus)

Lista de usuários (cards)

Cada usuário aparece como linha com:

  • Avatar (com iniciais quando não tem foto)
  • Nome + tag (você) se for o usuário logado
  • E-mail
  • Role atual (badge colorido — vermelho admin/super, azul analista, neutro outros)
  • Botão “Ver permissões” (popover com detalhe da role)
  • Botão Editar (lápis)
  • Badge de orgs (Building2 — quando user pertence a múltiplas)
  • Botão Inativar/Reativar (só visível para outros usuários, não pra si)

Convites pendentes (seção tracejada)

Aparece se há convites em aberto:

  • E-mail convidado
  • Role atribuída
  • “Expira em DD/MM/AAAA”
  • Botão Copiar link (token único)
  • Botão Revogar (X)

Convidar usuário — passo a passo

  1. Clique em “Convidar” no header.

  2. Preencha os campos:

    CampoDetalhe
    E-mailEndereço do convidado
    RoleDropdown — papel que ele terá na entrada
    OrganizaçãoDropdown (apenas se você tem acesso a múltiplas orgs)

    Ao selecionar a role, um popover mostra todas as permissões que ela contém — útil pra revisar antes de mandar.

  3. Clique em “Criar convite”.

    O ConectAI gera um link /invites/accept?token=.... A tela mostra:

    • Campo readonly com o link
    • Botão Copiar
    • Botão Fechar

    Importante hoje: o ConectAI não envia o e-mail automaticamente. Você copia o link e envia pelo seu canal de comunicação (e-mail próprio, WhatsApp interno, Slack do time).

  4. O convidado abre o link, define nome + senha, e é redirecionado para /login.

    Validações automáticas:

    • Token tem que existir e estar pending (não usado nem revogado)
    • Não pode estar expirado
    • E-mail vem pré-definido pelo convite (read-only)
    • Nome ≥ 2 chars, senha ≥ 6 chars

Trocar role de um usuário

No card do usuário, clique no select de role → escolha a nova → o ConectAI faz PATCH /api/users/:id com {roleId}.

A mudança é imediata — na próxima request do user, ele já tem as novas permissões.

Multi-org (usuários em mais de um provedor)

Se um usuário pertence a múltiplas orgs (consultor, parceiro, time da agência):

  • O badge {N} orgs aparece no card
  • Clicar abre o UserOrgsDialog com checklist
  • Marca/desmarca orgs e salva (PATCH /api/users/:id/orgs)

Quando o user tem múltiplas orgs, aparece um OrgSelector no header das telas relevantes para ele alternar.

Inativar usuário

Botão Power no card. Abre confirmação. PATCH /api/users/:id com {active:false}.

Inativar não exclui o usuário — apenas bloqueia o login. Pode reativar a qualquer momento.

Você não consegue inativar a si mesmo (botão escondido para isSelf).

Roles e permissões

O que é uma role

Uma role é um conjunto agregado de permissões. Cada permissão é uma string categoria:acao:

  • canais:view — pode ver a lista de canais
  • canais:edit — pode criar/editar canais
  • assinantes:export — pode exportar lista
  • auditoria:view / auditoria:export — pode ver / exportar audit log

As 28 categorias

dashboard, agentes, conhecimento, escalonamento, canais, historico, agenda, plano, usuarios, admin, auditoria, telefonia, campanhas, incidentes, assinantes, integracoes, compliance, inbox, whatsapp_groups, chat_interno, relatorios, inteligencia, sistema, task, live_voice, subflow, flows, comunicacao.

Scope: global vs scoped

Cada role tem um scope:

ScopeSignifica
globaltodas as orgs (super-admin do ConectAI) — bypassa filtros de organizationId
scopedapenas a org dele — comportamento normal

Se você é admin do ConectAI atendendo múltiplos provedores, sua role tem scope global.

Roles do sistema (não editáveis)

Algumas roles vêm de fábrica e têm flag isSystem:

  • Admin — todas as permissões da org
  • Analista — atendimento, histórico, métricas
  • Agente — atendimento básico
  • Somente leitura — sem edição

Roles do sistema não podem ser deletadas. Se você precisa de um conjunto diferente, crie uma role customizada em /config/grupos.

Criar role customizada

Em /config/grupos (permissão admin:view):

  1. Clique Nova role
  2. Defina nome + descrição
  3. Marque/desmarque permissions na taxonomia (cada categoria é expansível)
  4. Defina scope: global ou scoped
  5. Salve

A role nova aparece no dropdown de convites e no select de roles do usuário.

Edge cases

Convite expirado

Página /invites/accept mostra:

“Este convite expirou.” + link para login (caso o user já tenha conta).

Convite revogado / usado

“Este convite já foi utilizado ou revogado.”

E-mail já cadastrado

Se você convida alguém que já tem conta na org, o convite é bloqueado com erro:

“Este e-mail já tem acesso à organização.”

Usuário inativado tenta logar

Server retorna erro de autenticação (“Conta inativa”). Reative no painel pra restaurar.

Self-inativação

Você não consegue desligar seu próprio usuário (proteção contra lockout acidental).

Roadmap (em breve)

  • Envio automático de e-mail com link de convite (hoje é manual)
  • 2FA (autenticação em 2 fatores)
  • SSO (Google/Microsoft login)
  • Histórico de mudança de role por usuário

Próximo passo

Integrações