855f97c72b3ecfcc6169a309ea25eb2e71d630cb
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%