from functions.database import init_database, Usuario, get_db_connection import qrcode import os from pathlib import Path def create_admin_user(): try: # Inicializar o banco de dados init_database() # Obter a sessão db_session = get_db_connection() # Verificar se o admin foi criado admin = db_session.query(Usuario).filter_by(username="admin").first() 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}") # 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) # 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("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()