7399e0000e103c59720a91eca764d5658425ad58
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
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
-
Militante Básico (Nível 1)
- Visualizar próprios dados
- Editar próprios dados
- Visualizar dados da célula
-
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
-
Membro de Setor (Nível 3)
- Todas as permissões do Secretário de Célula
- Visualizar relatórios do setor
-
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
-
Membro de CR (Nível 5)
- Todas as permissões do Secretário de Setor
- Visualizar relatórios do CR
-
Secretário de CR (Nível 6)
- Todas as permissões do Membro de CR
- Gerenciar setores do CR
- Criar setores no CR
-
Membro do CC (Nível 7)
- Todas as permissões do Secretário de CR
- Visualizar relatórios nacionais
-
Secretário Geral (Nível 8)
- Todas as permissões do Membro do CC
- Gerenciar CRs
- Criar CRs
- Configurar sistema
Instalação
- Clone o repositório
- Crie um ambiente virtual:
python -m venv venv source venv/bin/activate # Linux/Mac # ou venv\Scripts\activate # Windows - Instale as dependências:
pip install -r requirements.txt - Execute as migrações do banco de dados:
python sql/migrate_db.py - 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 - Execute o aplicativo:
flask run
Uso
Decoradores de Permissão
O sistema fornece três decoradores para controle de acesso:
-
@require_permission(permission_name)- Verifica se o usuário tem uma permissão específica
- Exemplo:
@require_permission('create_cell_member')
-
@require_role(role_name)- Verifica se o usuário tem um papel específico
- Exemplo:
@require_role('Secretário de Célula')
-
@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íveispermissions: Armazena as permissões disponíveisrole_permissions: Mapeia papéis para permissõesuser_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
Languages
JavaScript
36.6%
HTML
33%
Python
30.3%