From 91d9bef6c6a0b493ec5f7a0ce3025145472fec8a Mon Sep 17 00:00:00 2001 From: LS Date: Tue, 22 Apr 2025 18:14:32 -0300 Subject: [PATCH] rebase usando pagamentos --- app.py | 134 +-------------------------------- routes/admin.py | 7 ++ templates/admin/dashboard.html | 102 +++++++++++++++++++++++++ templates/base.html | 6 +- 4 files changed, 113 insertions(+), 136 deletions(-) diff --git a/app.py b/app.py index 66517e3..1c2e248 100644 --- a/app.py +++ b/app.py @@ -262,7 +262,9 @@ def create_app(): session['is_admin'] = user.is_admin print(f"Login realizado: user_id={user.id}, username={user.username}, is_admin={user.is_admin}") - # Redirecionar para home + # Redirecionar para admin.dashboard se for admin, senão para home + if user.is_admin: + return redirect(url_for("admin.dashboard")) return redirect(url_for("home")) finally: db.close() @@ -2284,136 +2286,6 @@ def create_app(): campanhas = db.query(CampanhaFinanceira).all() return render_template("listar_campanhas_financeira.html", campanhas=campanhas) - @app.route('/dashboard_admin') - @login_required - def dashboard_admin(): - """Rota para o dashboard administrativo""" - if not current_user.is_admin: - flash('Você não tem permissão para acessar esta página.', 'danger') - return redirect(url_for('home')) - - db = get_db_connection() - try: - # Busca usuários - usuarios = db.query(Usuario).all() - - usuarios_data = [] - for usuario in usuarios: - user_data = { - 'id': usuario.id, - 'username': usuario.username, - 'email': usuario.email, - 'nome': usuario.username, # Usar username como fallback - 'ativo': usuario.ativo, - 'is_admin': usuario.is_admin, - 'last_login': usuario.ultimo_login.strftime('%d/%m/%Y %H:%M') if usuario.ultimo_login else 'Nunca', - 'nivel': 'Administrador' if usuario.is_admin else 'Usuário' - } - usuarios_data.append(user_data) - - return render_template( - 'dashboard_admin.html', - usuarios=usuarios_data - ) - except Exception as e: - import traceback - print(f"Erro no dashboard_admin: {traceback.format_exc()}") - flash('Erro ao carregar dados dos usuários. Por favor, tente novamente.', 'danger') - return redirect(url_for('home')) - finally: - db.close() - - @app.route('/reset_otp/', methods=['POST']) - @login_required - def reset_otp(user_id): - if not current_user.is_admin: - return jsonify({ - 'success': False, - 'error': 'Você não tem permissão para resetar OTP.' - }), 403 - - db = get_db_connection() - try: - usuario = db.query(Usuario).get(user_id) - if not usuario: - return jsonify({ - 'success': False, - 'error': 'Usuário não encontrado.' - }), 404 - - usuario.otp_secret = pyotp.random_base32() - db.commit() - - return jsonify({ - 'success': True - }) - except Exception as e: - db.rollback() - return jsonify({ - 'success': False, - 'error': str(e) - }), 500 - finally: - db.close() - - @app.route('/reset_password/', methods=['POST']) - @login_required - def reset_password(user_id): - if not current_user.is_admin: - return jsonify({ - 'success': False, - 'error': 'Você não tem permissão para resetar senhas.' - }), 403 - - db = get_db_connection() - try: - usuario = db.query(Usuario).get(user_id) - if not usuario: - return jsonify({ - 'success': False, - 'error': 'Usuário não encontrado.' - }), 404 - - nova_senha = ''.join(random.choices(string.ascii_letters + string.digits, k=12)) - usuario.set_password(nova_senha) - - try: - msg = Message( - 'Nova Senha - Sistema de Controles', - recipients=[usuario.email] - ) - msg.body = f'''Olá {usuario.nome}, - -Sua senha foi resetada por um administrador. Sua nova senha é: - -{nova_senha} - -Por favor, altere esta senha no seu próximo login. - -Atenciosamente, -Sistema de Controles''' - - mail.send(msg) - except Exception as e: - print(f"Erro ao enviar email: {str(e)}") - return jsonify({ - 'success': False, - 'error': 'Erro ao enviar email com a nova senha.' - }), 500 - - db.commit() - return jsonify({ - 'success': True - }) - except Exception as e: - db.rollback() - return jsonify({ - 'success': False, - 'error': str(e) - }), 500 - finally: - db.close() - return app def init_system(): diff --git a/routes/admin.py b/routes/admin.py index 232e307..47c49b2 100644 --- a/routes/admin.py +++ b/routes/admin.py @@ -9,7 +9,10 @@ import secrets from functools import wraps from sqlalchemy.exc import SQLAlchemyError import logging +<<<<<<< HEAD from datetime import datetime +======= +>>>>>>> a22b0e4 (refactor(#11): Integra listagem de usuários no dashboard) logger = logging.getLogger(__name__) @@ -49,8 +52,12 @@ def dashboard(): total_users=total_users, active_users=active_users, inactive_users=inactive_users, +<<<<<<< HEAD users=users, now=now +======= + users=users +>>>>>>> a22b0e4 (refactor(#11): Integra listagem de usuários no dashboard) ) except SQLAlchemyError as e: logger.error(f"Erro ao buscar dados do dashboard: {str(e)}") diff --git a/templates/admin/dashboard.html b/templates/admin/dashboard.html index 1ce3ae5..fa680a9 100644 --- a/templates/admin/dashboard.html +++ b/templates/admin/dashboard.html @@ -2,6 +2,7 @@ {% block title %}Dashboard Administrativo{% endblock %} +<<<<<<< HEAD {% block extra_css %}