LS 7399e0000e feat: Implementar arquitetura de permissões no nível de dados
BREAKING CHANGES:
- Sistema de permissões movido do nível de template para nível de dados
- Menus sempre visíveis, controle transparente no backend
- Templates nunca quebram, sempre renderizam com dados filtrados

Features:
-  Arquitetura MVC completa implementada
-  Controllers com filtragem hierárquica de dados
-  Template helpers simplificados (user_can sempre True)
-  Controle de acesso baseado na hierarquia organizacional
-  Regra especial para tesoureiros (acesso completo)
-  Tratamento robusto de erros em todos os controllers

Controllers implementados:
- militante_controller.py - Filtragem por célula/setor/CR/CC
- cota_controller.py - Controle baseado em permissões
- material_controller.py - Acesso flexível por nível
- pagamento_controller.py - Filtragem organizacional
- auth_controller.py - Autenticação com OTP
- home_controller.py - Dashboard com estatísticas
- usuario_controller.py - Gestão de usuários

Templates corrigidos:
- listar_cotas.html - URLs corrigidas (nova_cota → cota.nova)
- listar_tipos_materiais.html - Variáveis ajustadas (tipos → tipos_materiais)
- base.html - Menus sempre visíveis
- Diversos templates com correções de URLs e referências

Services implementados:
- auth_service.py - Lógica de autenticação
- dashboard_service.py - Estatísticas do dashboard
- cache_service.py - Integração com Redis
- celula_service.py - Operações de células

Models implementados:
- militante_model.py - Operações de militantes
- pagamento_model.py - Operações de pagamentos

Documentação:
- docs/permission_fixes_summary.md - Resumo completo das correções
- docs/architecture_summary.md - Arquitetura MVC
- docs/mvc_refactoring.md - Detalhes da refatoração
- docs/permission_strategy.md - Estratégia de permissões
- docs/redis_cache_setup.md - Setup do cache Redis
- README.md atualizado com nova arquitetura

Testes:
- test_menu_navigation.py - Testes unitários de navegação
- test_integration_menu.py - Testes de integração com Selenium

Status dos testes:
 Funcionais: /, /dashboard, /pagamentos, /materiais
 Com problemas: /militantes, /cotas, /tipos-materiais, /admin/dashboard

Hierarquia de permissões implementada:
Admin → Acesso total
CC → Acesso total
CR → Dados do CR
Setor → Dados do setor
Célula → Dados da célula

Próximos passos identificados:
- Corrigir referências a Militante indefinido nos templates
- Resolver problemas de campos inexistentes
- Corrigir roteamento admin
2025-07-01 13:42:56 -03:00
2025-04-09 09:59:12 -03:00
2025-04-09 09:59:12 -03:00

Sistema de Controle de Militantes

Sistema para gerenciamento de militantes, células, setores e comitês regionais.

Estrutura de Permissões (RBAC)

O sistema utiliza um sistema de controle de acesso baseado em papéis (RBAC) com a seguinte hierarquia:

Níveis de Papéis

  1. Militante Básico (Nível 1)

    • Visualizar próprios dados
    • Editar próprios dados
    • Visualizar dados da célula
  2. Secretário de Célula (Nível 2)

    • Todas as permissões do Militante Básico
    • Gerenciar membros da célula
    • Criar membros na célula
    • Visualizar relatórios da célula
  3. Membro de Setor (Nível 3)

    • Todas as permissões do Secretário de Célula
    • Visualizar relatórios do setor
  4. Secretário de Setor (Nível 4)

    • Todas as permissões do Membro de Setor
    • Gerenciar células do setor
    • Criar células no setor
  5. Membro de CR (Nível 5)

    • Todas as permissões do Secretário de Setor
    • Visualizar relatórios do CR
  6. Secretário de CR (Nível 6)

    • Todas as permissões do Membro de CR
    • Gerenciar setores do CR
    • Criar setores no CR
  7. Membro do CC (Nível 7)

    • Todas as permissões do Secretário de CR
    • Visualizar relatórios nacionais
  8. Secretário Geral (Nível 8)

    • Todas as permissões do Membro do CC
    • Gerenciar CRs
    • Criar CRs
    • Configurar sistema

Instalação

  1. Clone o repositório
  2. Crie um ambiente virtual:
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    # ou
    venv\Scripts\activate  # Windows
    
  3. Instale as dependências:
    pip install -r requirements.txt
    
  4. Execute as migrações do banco de dados:
    python sql/migrate_db.py
    
  5. Configure as variáveis de ambiente no arquivo .env:
    FLASK_APP=app.py
    FLASK_ENV=development
    SECRET_KEY=sua_chave_secreta
    MAIL_SERVER=seu_servidor_smtp
    MAIL_PORT=587
    MAIL_USE_TLS=True
    MAIL_USERNAME=seu_email
    MAIL_PASSWORD=sua_senha
    
  6. Execute o aplicativo:
    flask run
    

Uso

Decoradores de Permissão

O sistema fornece três decoradores para controle de acesso:

  1. @require_permission(permission_name)

    • Verifica se o usuário tem uma permissão específica
    • Exemplo: @require_permission('create_cell_member')
  2. @require_role(role_name)

    • Verifica se o usuário tem um papel específico
    • Exemplo: @require_role('Secretário de Célula')
  3. @require_minimum_role(min_level)

    • Verifica se o usuário tem um papel com nível mínimo
    • Exemplo: @require_minimum_role(Role.SECRETARIO_CR)

Verificando Permissões no Código

# Verificar se um usuário tem uma permissão
if user.has_permission('create_cell_member'):
    # Faça algo

# Verificar se um usuário tem um papel
if user.has_role('Secretário de Célula'):
    # Faça algo

# Obter o papel mais alto do usuário
highest_role = user.get_highest_role()
if highest_role and highest_role.nivel >= Role.SECRETARIO_CR:
    # Faça algo

Estrutura do Banco de Dados

O sistema utiliza as seguintes tabelas para o RBAC:

  • roles: Armazena os papéis disponíveis
  • permissions: Armazena as permissões disponíveis
  • role_permissions: Mapeia papéis para permissões
  • user_roles: Mapeia usuários para papéis

Segurança

  • Todas as senhas são armazenadas com hash bcrypt
  • Sessões expiram após período de inatividade
  • Controle de acesso granular baseado em papéis
  • Proteção contra CSRF
  • Validação de entrada de dados
Description
No description provided
Readme 5.2 MiB
Languages
JavaScript 36.6%
HTML 33%
Python 30.3%