Funções e Permissões de Operadores de Caixa
O HandyCafe utiliza controle de acesso baseado em funções (RBAC) para gerenciar o que cada membro da equipe pode ver e fazer dentro do sistema. Cada operador de caixa recebe uma função e essa função determina suas permissões exatas em todo o aplicativo.
Tipos de Função
O HandyCafe oferece três tipos de funções:
Admin
A função Admin concede acesso irrestrito a todos os recursos do sistema. Admins podem gerenciar operadores, visualizar todos os relatórios, modificar configurações e realizar qualquer operação. Esta função é destinada a proprietários e gerentes sênior que precisam de controle total.
Sempre existe pelo menos uma conta Admin no sistema. A função Admin não pode ser excluída nem ter suas permissões reduzidas.
Padrão
A função Padrão não possui permissões especiais atribuídas. Um operador com a função Padrão pode fazer login e realizar operações básicas mas não pode acessar áreas restritas como gerenciamento de membros, relatórios ou configuração de consoles. Use como ponto de partida para novos funcionários que precisam apenas lidar com tarefas básicas.
Personalizada
Funções personalizadas permitem definir exatamente quais permissões um operador possui. Você escolhe um nome, define um nível e marca ou desmarca flags de permissão individuais em seis categorias. Isso oferece controle detalhado sobre o que cada membro da equipe pode acessar.
Categorias de Permissão
O HandyCafe possui 22 flags de permissão individuais organizadas em 6 categorias. Cada flag controla uma ação ou visualização específica dentro do sistema.
1. Autenticação (1 flag)
| Flag | Descrição |
|---|---|
| CLIENT_LOGIN | Permite ao operador fazer login em PCs clientes (iniciar sessões em nome de clientes) |
Sem esta permissão, o operador não pode iniciar ou gerenciar sessões de clientes.
2. Membros (6 flags)
| Flag | Descrição |
|---|---|
| VIEW | Ver a lista de membros e detalhes dos membros |
| ADD | Criar novas contas de membros |
| DELETE | Remover contas de membros do sistema |
| UPDATE | Editar informações de membros existentes (nome, saldo, etc.) |
| DISPLAY_EMAIL | Visualizar endereços de email de membros na lista |
| DISPLAY_GSM | Visualizar números de telefone de membros na lista |
Um operador com apenas VIEW pode navegar pela lista de membros mas não pode criar, editar ou remover nenhum membro. As flags DISPLAY_EMAIL e DISPLAY_GSM controlam se informações sensíveis de contato são visíveis. Isso é útil para conformidade com privacidade quando nem todos os funcionários devem ver dados pessoais.
3. Consoles (4 flags)
| Flag | Descrição |
|---|---|
| VIEW | Ver a página de consoles e os cartões de status dos consoles |
| ADD | Registrar novos consoles de jogos no sistema |
| DELETE | Remover consoles do sistema |
| UPDATE | Editar detalhes de consoles (nome, endereço MAC, preços) |
4. Logs (4 flags)
| Flag | Descrição |
|---|---|
| VIEW | Acessar a página de logs |
| DISPLAY_FULL | Ver o histórico completo de logs (todas as datas) |
| DISPLAY_TODAY | Ver apenas as entradas de log do dia atual |
| DELETE | Excluir entradas de log |
Se um operador possui VIEW e DISPLAY_TODAY mas não DISPLAY_FULL, ele só pode ver entradas de log do dia atual. Isso é útil para supervisores de turno que precisam monitorar a atividade atual sem acessar registros históricos.
5. Relatórios (3 flags)
| Flag | Descrição |
|---|---|
| PAGE_VIEW | Acessar a página de relatórios/relatório de caixa |
| DISPLAY_FULL | Ver o histórico completo de relatórios (todas as datas) |
| DISPLAY_TODAY | Ver apenas os dados de relatórios do dia atual |
Similar aos logs, as permissões de relatórios permitem controlar se a equipe pode ver o histórico financeiro completo ou apenas os números do dia atual. Um operador com PAGE_VIEW e DISPLAY_TODAY pode revisar as transações do seu turno mas não pode acessar dados históricos de receita.
6. Métodos de Pagamento (4 flags)
| Flag | Descrição |
|---|---|
| MANAGE | Acessar a área de gerenciamento de métodos de pagamento |
| ADD | Criar novos métodos de pagamento (dinheiro, cartão, pagamento móvel, etc.) |
| DELETE | Remover métodos de pagamento do sistema |
| UPDATE | Editar detalhes de métodos de pagamento existentes |
Resumo
| Categoria | Flags | Total |
|---|---|---|
| Autenticação | CLIENT_LOGIN | 1 |
| Membros | VER, ADICIONAR, EXCLUIR, ATUALIZAR, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| Consolas | VER, ADICIONAR, EXCLUIR, ATUALIZAR | 4 |
| Registros | VER, DISPLAY_FULL, DISPLAY_TODAY, EXCLUIR | 4 |
| Relatórios | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| Métodos de Pagamento | GERENCIAR, ADICIONAR, EXCLUIR, ATUALIZAR | 4 |
| Total | 22 |
Como as Permissões Funcionam
Cada categoria de permissão possui um conjunto de flags de permissão individuais. Cada flag pode ser habilitada ou desabilitada independentemente usando caixas de seleção no editor de funções.
A interface oferece caixas de seleção para cada permissão. Basta marcar ou desmarcar as permissões que deseja conceder ou revogar. O sistema lida com o armazenamento automaticamente -- não é necessário calcular nenhum valor manualmente.
Por exemplo, na categoria Membros, você pode habilitar ou desabilitar independentemente: VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL e DISPLAY_GSM. Um operador com apenas VIEW e UPDATE marcados pode ver e editar membros, mas não pode adicioná-los ou excluí-los.
Criando uma Conta de Operador de Caixa
- Navegue até Gestão > Operadores de Caixa no aplicativo servidor.
- Clique no botão Adicionar Operador de Caixa.
- Informe o nome de usuário do operador. Este será utilizado para fazer login.
- Defina uma senha. Escolha uma senha forte. Esta conta pode ter acesso a dados financeiros e informações de clientes.
- Selecione uma função no menu. Você pode escolher Admin, Padrão ou qualquer função personalizada que tenha criado.
- Clique em Salvar para criar a conta.
O novo operador já pode fazer login no servidor HandyCafe usando suas credenciais.
Criando uma Função Personalizada
- Navegue até Gestão > Funções de Operadores no aplicativo servidor.
- Clique no botão Adicionar Função.
- Informe um nome da função (ex.: "Supervisor de Turno", "Operador Júnior", "Equipe Noturna").
- Defina o nível da função. Níveis mais altos indicam mais autoridade. Isso é usado para ordenação de exibição e hierarquia organizacional.
- Marque ou desmarque permissões individuais nas seis categorias. Cada caixa de seleção corresponde a uma das 22 configurações de permissão.
- Clique em Salvar para criar a função.
Após criada, você pode atribuir esta função a qualquer conta de operador.
Aplicação no Backend
As permissões são aplicadas no lado do servidor, não apenas ocultas na interface. Mesmo que alguém tente contornar a interface do cliente ou manipular o código do frontend, o servidor valida cada solicitação contra as permissões da função do operador antes de executá-la.
Isso significa:
- Um operador sem MEMBER_DELETE não pode excluir um membro, mesmo enviando uma solicitação direta à API.
- Um operador sem REPORT_DISPLAY_FULL não pode recuperar dados históricos de relatórios, independente de como acesse o sistema.
- Todas as verificações de permissão acontecem no backend Rust antes de qualquer operação no banco de dados.
Segurança: Limitação de Taxa
Para proteger contra ataques de força bruta, o HandyCafe aplica limitação de taxa de login:
- 5 tentativas de login mal-sucedidas dentro de uma janela de 10 minutos aciona um bloqueio automático.
- O bloqueio dura 15 minutos, durante os quais nenhuma tentativa de login é aceita para aquela conta.
- Após o período de bloqueio expirar, o operador pode tentar novamente.
Isso se aplica tanto à tela de login do servidor quanto ao login do operador nos PCs clientes.
Gestão de Turnos
A atividade de cada operador de caixa é rastreada individualmente durante seu turno:
- Todas as transações (pagamentos de sessão, pagamentos de pedidos, etc.) são registradas com a identidade do operador.
- A caixa registradora controla o saldo de abertura e fechamento para cada turno separadamente.
- Relatórios de turno podem ser gerados por operador, mostrando exatamente quanta receita foi processada durante o turno.
- Quando um operador faz logout, seu turno é encerrado e um resumo fica disponível para revisão.
Este rastreamento por operador garante responsabilização e facilita a identificação de discrepâncias ao final de cada turno.
Exemplos de Permissão
Cenário 1: Operador Básico Um novo funcionário que precisa apenas iniciar/encerrar sessões e receber pagamentos. Atribua uma função personalizada com apenas CLIENT_LOGIN habilitado. Ele não pode visualizar membros, relatórios, logs ou consoles.
Cenário 2: Supervisor de Turno Um funcionário de confiança que supervisiona o salão. Atribua uma função com CLIENT_LOGIN, MEMBER_VIEW, MEMBER_UPDATE, CONSOLE_VIEW, REPORT_PAGE_VIEW e REPORT_DISPLAY_TODAY. Ele pode gerenciar sessões, visualizar (mas não excluir) membros, ver consoles e conferir a receita do dia mas não pode acessar relatórios históricos completos ou modificar métodos de pagamento.
Cenário 3: Gerente Noturno Um gerente que atua no turno da noite de forma independente. Conceda a maioria das permissões exceto MEMBER_DELETE, LOG_DELETE e PAYMENT_METHOD_DELETE. Ele pode gerenciar tudo durante seu turno mas não pode remover permanentemente dados críticos.
Cenário 4: Equipe com Restrição de Privacidade Um operador que não deve ver dados de contato dos clientes. Crie uma função com MEMBER_VIEW habilitado mas DISPLAY_EMAIL e DISPLAY_GSM desabilitados. Ele pode buscar membros pelo nome mas as informações pessoais de contato ficam ocultas.