Login funcionando

This commit is contained in:
LS
2025-03-24 14:50:42 -03:00
parent cccca2ef29
commit 0f4056fbff
5 changed files with 203 additions and 117 deletions

View File

@@ -1,78 +1,61 @@
from functions.database import Usuario, Base, engine, get_db_connection
from functions.database import init_database, Usuario, get_db_connection
import qrcode
import os
from pathlib import Path
def create_admin_user():
try:
# Criar as tabelas se não existirem
Base.metadata.create_all(engine)
# Inicializar o banco de dados
init_database()
# Obter conexão com o banco
# Obter a sessão
db_session = get_db_connection()
# Verificar se já existe um admin
# Verificar se o admin foi criado
admin = db_session.query(Usuario).filter_by(username="admin").first()
if not admin:
# Criar usuário admin
admin = Usuario(
username="admin",
password="admin123",
is_admin=True
)
admin.email = "admin@example.com"
if admin:
print("\n=== Detalhes do Usuário Admin ===")
print(f"Username: admin")
print(f"Email: {admin.email}")
print(f"OTP Secret: {admin.otp_secret}")
db_session.add(admin)
db_session.commit()
# Configurar diretório para o QR Code
home = Path.home()
qr_dir = home / '.local' / 'share' / 'controles' / 'qrcodes'
qr_dir.mkdir(parents=True, exist_ok=True)
print("\n=== Usuário Admin Criado com Sucesso ===")
# Gerar QR Code
qr = qrcode.QRCode(version=1, box_size=10, border=5)
qr.add_data(admin.get_otp_uri())
qr.make(fit=True)
# Salvar QR Code
qr_path = qr_dir / 'admin_qr.png'
img = qr.make_image(fill_color="black", back_color="white")
img.save(str(qr_path))
print(f"\nQR Code salvo em: {qr_path}")
print("\nPasso a passo para configurar o OTP:")
print("1. Instale um aplicativo autenticador no seu celular")
print(" (Google Authenticator, Microsoft Authenticator, etc)")
print("2. Abra o aplicativo")
print("3. Selecione a opção para adicionar uma nova conta")
print("4. Escaneie o QR Code gerado")
print("\nOU, se preferir configuração manual:")
print(f"1. Use o segredo: {admin.otp_secret}")
print("2. Nome da conta: admin")
print("3. Tipo: Baseado em tempo (TOTP)")
else:
print("\n=== Usuário Admin Encontrado ===")
print(f"Username: admin")
print(f"Senha: admin123")
print(f"Segredo OTP: {admin.otp_secret}")
# Gerar QR Code
qr = qrcode.QRCode(version=1, box_size=10, border=5)
qr.add_data(admin.get_otp_uri())
qr.make(fit=True)
# Encontrar o diretório raiz do projeto (onde está o app.py)
current_dir = Path(__file__).resolve().parent
project_root = current_dir.parent # Volta um nível para a raiz do projeto
static_dir = project_root / 'static'
# Criar diretório static se não existir
os.makedirs(static_dir, exist_ok=True)
# Caminho completo para o arquivo QR code
qr_path = static_dir / 'admin_qr.png'
# Salvar QR Code como imagem
img = qr.make_image(fill_color="black", back_color="white")
img.save(str(qr_path))
print(f"\nQR Code salvo em: {qr_path}")
print(f"Diretório atual: {os.getcwd()}")
print(f"O arquivo existe? {os.path.exists(qr_path)}")
print("\nPasso a passo para configurar o OTP:")
print("1. Instale um aplicativo autenticador no seu celular")
print(" (Google Authenticator, Microsoft Authenticator, etc)")
print("2. Abra o aplicativo")
print("3. Selecione a opção para adicionar uma nova conta")
print("4. Escaneie o QR Code gerado")
print("\nOU, se preferir configuração manual:")
print(f"1. Use o segredo: {admin.otp_secret}")
print("2. Nome da conta: admin")
print("3. Tipo: Baseado em tempo (TOTP)")
print("ERRO: Falha ao criar usuário admin!")
except Exception as e:
print(f"\nErro durante a execução: {e}")
import traceback
traceback.print_exc()
finally:
if 'db_session' in locals():
db_session.close()
if __name__ == "__main__":
create_admin_user()