61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
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() |