Pular para o conteúdo principal

User (Usuario)

O User representa uma pessoa que acessa o sistema Onepet2. Pode ser o proprietario da conta ou um membro da equipe.

Descricao

Usuarios sao as pessoas que interagem com o sistema. Cada usuario pertence a uma Account e pode ter diferentes niveis de acesso baseados em seu Profile.

Dados

Identificacao

CampoTipoObrigatorioDescricao
nameTextoSimNome completo do usuario
emailTextoSimEmail (unico por Account)
cpfTextoCondicionalCPF (obrigatorio para Owner)
phoneTextoNaoTelefone de contato

Autenticacao

CampoTipoObrigatorioDescricao
passwordSenhaSim (novo)Senha de acesso
password_confirmationSenhaSim (novo)Confirmacao da senha

Perfil e Acesso

CampoTipoObrigatorioDescricao
ownerBooleanoNaoSe e proprietario da Account
profileReferenciaNaoPerfil de permissoes
imageImagemNaoAvatar/foto do usuario

Contexto de Trabalho

CampoTipoDescricao
current_storeReferenciaFilial atualmente selecionada
store_nameTextoNome da filial atual (calculado)

Relacionamentos

Pertence a

EntidadeDescricaoObrigatorio
AccountConta/empresaSim
Current StoreFilial atualNao
StoreFilial principalNao
ProfilePerfil de permissoesNao
ProfessionalProfissional vinculadoNao
CS (OnepetUser)Customer SuccessNao

Possui

EntidadeDescricao
my_accountAccount propria (se Owner)

Tipos de Usuario

Owner (Proprietario)

O Owner e o usuario que criou a Account:

CaracteristicaDescricao
QuantidadeExatamente 1 por Account
PermissoesAcesso total ao sistema
CPFObrigatorio
my_accountTem relacionamento com Account
ExclusaoNao pode ser excluido

Team Member (Colaborador)

Membros da equipe sao usuarios convidados pelo Owner:

CaracteristicaDescricao
QuantidadeIlimitado
PermissoesDefinidas pelo Profile
CPFOpcional
ExclusaoPode ser excluido pelo Owner

Regras de Negocio

Autenticacao

  1. Metodo: Email + Senha
  2. Tecnologia: JWT (JSON Web Tokens)
  3. Headers: access-token, client, uid

Validacoes

CampoValidacaoQuando
nameObrigatorioSempre
emailObrigatorio + Unico (por Account)Sempre
cpfObrigatorioSe owner = true
passwordObrigatorio + ConfirmacaoNovo usuario ou alteracao

Regra de Senha

Senha obrigatoria quando:
- Novo usuario (new_record)
- Campo password preenchido
- Campo password_confirmation preenchido

Unicidade de Email

  • Email deve ser unico dentro da mesma Account
  • Mesmo email pode existir em Accounts diferentes
  • Permite que uma pessoa tenha contas em multiplos petshops

Validacao de Current Store

Ao selecionar uma Store:

  • Sistema verifica se Store pertence a Account do usuario
  • Se nao pertencer: erro "Esta filial nao pertence a sua conta"
  • Se pertencer: atualiza current_store_id

Fluxo de Criacao

Novo Usuario (Cadastro)

Novo Membro da Equipe

Automacoes

Ao Criar Usuario

  1. Atribuicao de Account

    • Se criado por outro usuario: herda Account
    • Se novo cadastro: Account criada separadamente
  2. Atribuicao de Store

    • Se criado por outro usuario: herda current_store
    • Se novo cadastro: primeira Store criada
  3. Atribuicao de CS

    • Owner: CS padrao "Raquel"
    • Team Member: herda CS da Account

Ao Salvar Usuario

  1. Definicao de store_name
    • Se current_store existe: usa nome da Store
    • Se nao existe: "Conta Global"

Permissoes e Autorizacao

Verificacao de Permissao

Modos de Permissao do Owner

ModoDescricao
manage_from_globalGerencia dados de todas as Stores
read_from_globalLe dados de todas as Stores
only_readApenas leitura

Integracao WhatsApp

Usuarios podem ter integracao com WhatsApp:

CampoDescricao
whatsapp_connectedSe WhatsApp esta conectado
whatsapp_connection_idID da conexao

Verificacao de Conexao

  1. Sistema verifica se Store tem configuracao WhatsApp
  2. Se nao tem: cria automaticamente
  3. Retorna status de conexao

Contexto de Trabalho

Current Store

O campo current_store define o contexto de trabalho:

  • Filtra dados exibidos para a Store selecionada
  • Pode ser alterado a qualquer momento
  • Persiste entre sessoes

Visualizacao Global

Quando current_store nao esta definido:

  • store_name mostra "Conta Global"
  • Dados de todas as Stores sao exibidos
  • Operacoes sao aplicadas globalmente

Campos Calculados

Avatar

Sistema gera avatar automaticamente:

  • Se imagem existe: mostra imagem
  • Se nao existe: mostra iniciais do nome/email

Stores

Lista de Stores disponiveis:

  • Retorna todas as Stores da Account
  • Usado para menu de selecao de filial

short_name

Primeiro nome do usuario:

  • "Joao Silva" -> "Joao"

API Response (as_json)

Dados incluidos na resposta JSON:

CampoDescricao
whatsapp_connection_idID da conexao WhatsApp
whatsapp_connectedStatus da conexao
icon_whatsappIcone de status
iconAvatar pequeno
user_avatarAvatar grande
cs_nameNome do CS
cs_whatsappLink WhatsApp do CS
trialDias restantes de trial
current_store_idID da Store atual
store_nameNome da Store atual
storesLista de Stores disponiveis

Permissoes

AcaoQuem Pode
CriarOwner, usuarios com permissao
EditarProprio usuario, Owner
ExcluirOwner (exceto a si mesmo)
VerOwner, usuarios da Account

Restricoes Importantes

  1. Email Unico por Account: Nao pode duplicar email na mesma Account
  2. Owner Unico: Apenas um Owner por Account
  3. Owner Nao Excluivel: Owner nao pode ser excluido
  4. Store Valida: current_store deve pertencer a Account
  5. Profile para Team: Team members precisam de Profile para ter permissoes

Seguranca

Boas Praticas

  1. Senhas sao criptografadas (bcrypt)
  2. Tokens JWT expiram periodicamente
  3. Sessoes podem ser invalidadas
  4. Acoes sensiveis requerem re-autenticacao

Alteracao de Senha

Fluxo separado para alteracao de senha:

  1. Usuario acessa perfil
  2. Seleciona "Alterar Senha"
  3. Informa senha atual e nova senha
  4. Confirma nova senha
  5. Sistema valida e atualiza