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
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| name | Texto | Sim | Nome completo do usuario |
| Texto | Sim | Email (unico por Account) | |
| cpf | Texto | Condicional | CPF (obrigatorio para Owner) |
| phone | Texto | Nao | Telefone de contato |
Autenticacao
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| password | Senha | Sim (novo) | Senha de acesso |
| password_confirmation | Senha | Sim (novo) | Confirmacao da senha |
Perfil e Acesso
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| owner | Booleano | Nao | Se e proprietario da Account |
| profile | Referencia | Nao | Perfil de permissoes |
| image | Imagem | Nao | Avatar/foto do usuario |
Contexto de Trabalho
| Campo | Tipo | Descricao |
|---|---|---|
| current_store | Referencia | Filial atualmente selecionada |
| store_name | Texto | Nome da filial atual (calculado) |
Relacionamentos
Pertence a
| Entidade | Descricao | Obrigatorio |
|---|---|---|
| Account | Conta/empresa | Sim |
| Current Store | Filial atual | Nao |
| Store | Filial principal | Nao |
| Profile | Perfil de permissoes | Nao |
| Professional | Profissional vinculado | Nao |
| CS (OnepetUser) | Customer Success | Nao |
Possui
| Entidade | Descricao |
|---|---|
| my_account | Account propria (se Owner) |
Tipos de Usuario
Owner (Proprietario)
O Owner e o usuario que criou a Account:
| Caracteristica | Descricao |
|---|---|
| Quantidade | Exatamente 1 por Account |
| Permissoes | Acesso total ao sistema |
| CPF | Obrigatorio |
| my_account | Tem relacionamento com Account |
| Exclusao | Nao pode ser excluido |
Team Member (Colaborador)
Membros da equipe sao usuarios convidados pelo Owner:
| Caracteristica | Descricao |
|---|---|
| Quantidade | Ilimitado |
| Permissoes | Definidas pelo Profile |
| CPF | Opcional |
| Exclusao | Pode ser excluido pelo Owner |
Regras de Negocio
Autenticacao
- Metodo: Email + Senha
- Tecnologia: JWT (JSON Web Tokens)
- Headers:
access-token,client,uid
Validacoes
| Campo | Validacao | Quando |
|---|---|---|
| name | Obrigatorio | Sempre |
| Obrigatorio + Unico (por Account) | Sempre | |
| cpf | Obrigatorio | Se owner = true |
| password | Obrigatorio + Confirmacao | Novo 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
-
Atribuicao de Account
- Se criado por outro usuario: herda Account
- Se novo cadastro: Account criada separadamente
-
Atribuicao de Store
- Se criado por outro usuario: herda current_store
- Se novo cadastro: primeira Store criada
-
Atribuicao de CS
- Owner: CS padrao "Raquel"
- Team Member: herda CS da Account
Ao Salvar Usuario
- 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
| Modo | Descricao |
|---|---|
| manage_from_global | Gerencia dados de todas as Stores |
| read_from_global | Le dados de todas as Stores |
| only_read | Apenas leitura |
Integracao WhatsApp
Usuarios podem ter integracao com WhatsApp:
| Campo | Descricao |
|---|---|
| whatsapp_connected | Se WhatsApp esta conectado |
| whatsapp_connection_id | ID da conexao |
Verificacao de Conexao
- Sistema verifica se Store tem configuracao WhatsApp
- Se nao tem: cria automaticamente
- 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:
| Campo | Descricao |
|---|---|
| whatsapp_connection_id | ID da conexao WhatsApp |
| whatsapp_connected | Status da conexao |
| icon_whatsapp | Icone de status |
| icon | Avatar pequeno |
| user_avatar | Avatar grande |
| cs_name | Nome do CS |
| cs_whatsapp | Link WhatsApp do CS |
| trial | Dias restantes de trial |
| current_store_id | ID da Store atual |
| store_name | Nome da Store atual |
| stores | Lista de Stores disponiveis |
Permissoes
| Acao | Quem Pode |
|---|---|
| Criar | Owner, usuarios com permissao |
| Editar | Proprio usuario, Owner |
| Excluir | Owner (exceto a si mesmo) |
| Ver | Owner, usuarios da Account |
Restricoes Importantes
- Email Unico por Account: Nao pode duplicar email na mesma Account
- Owner Unico: Apenas um Owner por Account
- Owner Nao Excluivel: Owner nao pode ser excluido
- Store Valida: current_store deve pertencer a Account
- Profile para Team: Team members precisam de Profile para ter permissoes
Seguranca
Boas Praticas
- Senhas sao criptografadas (bcrypt)
- Tokens JWT expiram periodicamente
- Sessoes podem ser invalidadas
- Acoes sensiveis requerem re-autenticacao
Alteracao de Senha
Fluxo separado para alteracao de senha:
- Usuario acessa perfil
- Seleciona "Alterar Senha"
- Informa senha atual e nova senha
- Confirma nova senha
- Sistema valida e atualiza