Files
controles/create_admin.py

78 lines
2.1 KiB
Python

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()