Pequenas correções

- atualizando requirements
- gitignore com as extensoes de database
- garantindo admin com role associada
This commit is contained in:
2026-03-06 17:37:54 -03:00
parent bb9d7cf8a6
commit 246015563b
6 changed files with 23 additions and 15 deletions

2
.gitignore vendored
View File

@@ -260,6 +260,8 @@ poetry.toml
pyrightconfig.json pyrightconfig.json
database.db database.db
database.db-shm
database.db-wal
admin_qr.png admin_qr.png
# End of https://www.toptal.com/developers/gitignore/api/python,flask # End of https://www.toptal.com/developers/gitignore/api/python,flask

View File

@@ -16,6 +16,7 @@ clean:
rm -f admin_qr.png rm -f admin_qr.png
rm -f data/admin_qr.png rm -f data/admin_qr.png
rm -f /tmp/admin_qr.png rm -f /tmp/admin_qr.png
find . -type d -name "__pycache__" -prune -exec rm -rf {} +
db-reset: clean db-reset: clean
PYTHONUNBUFFERED=1 python -B scripts/manage.py db_reset PYTHONUNBUFFERED=1 python -B scripts/manage.py db_reset

View File

@@ -4,9 +4,9 @@ Sistema web para gestão organizacional (militantes, estrutura hierárquica, cot
## 🔧 Tecnologias ## 🔧 Tecnologias
- **Backend**: Flask 2.3.3 - **Backend**: Flask 3.0.2
- **Frontend**: Bootstrap 5, HTML5, CSS3, JavaScript - **Frontend**: Bootstrap 5, HTML5, CSS3, JavaScript
- **Database**: SQLite + SQLAlchemy 2.0.21 - **Database**: SQLite + SQLAlchemy 2.0+ (>= 2.0.36)
- **Cache**: Redis 7.4.4 (opcional fora do Docker) - **Cache**: Redis 7.4.4 (opcional fora do Docker)
- **Authentication**: Flask-Login + OTP (pyotp) - **Authentication**: Flask-Login + OTP (pyotp)
- **Container**: Docker + Docker Compose - **Container**: Docker + Docker Compose
@@ -346,4 +346,4 @@ if user.has_minimum_role(Role.SECRETARIO_CELULA):
- Sessões expiram após período de inatividade - Sessões expiram após período de inatividade
- Controle de acesso granular baseado em papéis - Controle de acesso granular baseado em papéis
- Proteção contra CSRF - Proteção contra CSRF
- Validação de entrada de dados - Validação de entrada de dados

6
app.py
View File

@@ -5,7 +5,7 @@ import logging
import time import time
from pathlib import Path from pathlib import Path
from flask import Flask from flask import Flask
from flask_bootstrap5 import Bootstrap from flask_bootstrap import Bootstrap5
from flask_login import LoginManager from flask_login import LoginManager
from flask_wtf.csrf import CSRFProtect from flask_wtf.csrf import CSRFProtect
from flask_mail import Mail from flask_mail import Mail
@@ -72,7 +72,7 @@ def create_app():
setup_logging(app) setup_logging(app)
# Configurar Bootstrap # Configurar Bootstrap
bootstrap = Bootstrap(app) bootstrap = Bootstrap5(app)
# Configurar CSRF Protection (desabilitado temporariamente) # Configurar CSRF Protection (desabilitado temporariamente)
# csrf = CSRFProtect() # csrf = CSRFProtect()
@@ -183,4 +183,4 @@ if __name__ == '__main__':
host='0.0.0.0', host='0.0.0.0',
port=5000, port=5000,
debug=os.getenv('FLASK_ENV') == 'development' debug=os.getenv('FLASK_ENV') == 'development'
) )

View File

@@ -1,14 +1,19 @@
Flask==2.3.3 Flask==3.0.2
Flask-Bootstrap5==0.1.dev1 Flask-SQLAlchemy==3.1.1
Flask-Login==0.6.3 Flask-Login==0.6.3
Flask-WTF==1.1.1 Flask-WTF==1.2.1
Flask-Mail==0.9.1 Flask-Mail==0.9.1
SQLAlchemy>=2.0.36 SQLAlchemy>=2.0.36
Werkzeug==2.3.7 Werkzeug==3.0.1
python-dotenv==1.0.0 python-dotenv==1.0.1
pyotp==2.8.0 pyotp==2.9.0
qrcode==7.4.2 qrcode==7.4.2
Pillow>=10.4.0 Pillow>=10.4.0
redis==5.0.1 email-validator==2.3.0
cryptography==42.0.2
bcrypt==4.1.2
Bootstrap-Flask==2.3.3
PyJWT==2.8.0
gunicorn==21.2.0 gunicorn==21.2.0
faker==19.13.0 Faker==19.13.0
redis==5.0.1

View File

@@ -89,10 +89,10 @@ def create_admin(username=ADMIN_USERNAME, password=ADMIN_PASSWORD, role=ADMIN_RO
is_admin=True is_admin=True
) )
admin_user.set_password(password) admin_user.set_password(password)
db.add(admin_user)
_ensure_admin_otp(db, admin_user) _ensure_admin_otp(db, admin_user)
_ensure_admin_role(db, admin_user, role) _ensure_admin_role(db, admin_user, role)
db.add(admin_user)
db.commit() db.commit()
qr_path = salvar_qr_code(admin_user) qr_path = salvar_qr_code(admin_user)