🔒

Módulo Bloqueio – BarberBot

Regras de acesso, motivos de bloqueio e integração com sessão/permissões/assinatura.

O bloqueio é um mecanismo de proteção operacional e comercial do BarberBot. Ele impede acesso quando o usuário não está habilitado (ex.: assinatura vencida, usuário inativo, permissão insuficiente).

📌 Arquivo relacionado

  • /sistema/bloqueio.php — tela/rotina principal de bloqueio.
  • /sistema/acesso.php — costuma redirecionar para o bloqueio quando sessão não atende regras.
  • /sistema/painel/ e /sistema/painel_cliente/ — áreas protegidas.

🚫 Motivos comuns de bloqueio (regras típicas)

  • Assinatura vencida: plano expirado / cobrança pendente.
  • Status inativo: usuário desativado pelo admin ou por regra interna.
  • Permissão insuficiente: grupo sem acesso ao módulo/página.
  • Sessão inválida: sessão ausente, expirada ou adulterada.

🧭 Fluxo recomendado (padrão BarberBot)

  1. Usuário tenta entrar em página protegida.
  2. Página chama guard acesso.php (ou checagem equivalente).
  3. Validação verifica:
    • sessão logada
    • status do usuário
    • grupo/permissão
    • assinatura/limite
  4. Falhou em qualquer regra → redireciona para bloqueio.php.

🛠️ Exemplo de guarda (modelo)

Exemplo de lógica de bloqueio (genérica, para padronização):

// Exemplo (modelo) - centralize em acesso.php
session_start();

if (empty($_SESSION['id_usuario'])) {
  header("Location: index.php");
  exit;
}

if (!empty($_SESSION['bloqueado']) && $_SESSION['bloqueado'] == 1) {
  header("Location: bloqueio.php");
  exit;
}

// Exemplo: plano vencido (se sua regra preencher na sessão)
if (!empty($_SESSION['plano_vencido']) && $_SESSION['plano_vencido'] == 1) {
  header("Location: bloqueio.php?motivo=plano");
  exit;
}

✅ Boas práticas (para ficar “profissional” de verdade)

  • Não exponha detalhes sensíveis (ex.: “senha errada” ok, “usuário existe” evita).
  • Log interno: registrar motivo real do bloqueio (suporte/auditoria).
  • Mensagem amigável no bloqueio e CTA claro (renovar plano / falar com suporte).
  • Proteção no backend também (não basta esconder botões no frontend).