from functions.database import init_database, Usuario, Role, get_db_connection import qrcode import os from pathlib import Path import pyotp def generate_qr_code(user): """ Gera o QR code para um usuário específico Args: user: Instância do modelo Usuario Returns: Path: Caminho do arquivo QR code gerado """ # Gerar QR Code apenas na raiz do projeto qr_path = Path('admin_qr.png') # Remover arquivo antigo se existir if qr_path.exists(): os.remove(str(qr_path)) # Gerar e salvar QR Code qr = qrcode.QRCode(version=1, box_size=10, border=5) # Gerar URI do OTP totp = pyotp.TOTP(user.otp_secret) otp_uri = totp.provisioning_uri( name=user.username, issuer_name="Sistema de Controles" ) qr.add_data(otp_uri) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") img.save(str(qr_path)) print(f"\nQR Code gerado em: {os.path.abspath(qr_path)}") return qr_path, otp_uri def create_admin_user(): """Cria o usuário admin do sistema""" session = get_db_connection() try: # Buscar role de administrador admin_role = session.query(Role).filter_by(nome="Administrador").first() if not admin_role: print("Role de administrador não encontrada!") return # Verificar se o usuário admin já existe if not session.query(Usuario).filter_by(username="admin").first(): admin = Usuario( username="admin", email="admin@example.com", is_admin=True ) admin.set_password("admin123") admin.tipo = "ADMIN" admin.roles.append(admin_role) session.add(admin) session.commit() print("Usuário admin criado com sucesso!") else: print("Usuário admin já existe!") except Exception as e: print(f"Erro ao criar usuário admin: {e}") session.rollback() raise finally: session.close() if __name__ == "__main__": create_admin_user()