diff --git a/app.py b/app.py index 85ac6ab..64bc675 100644 --- a/app.py +++ b/app.py @@ -251,9 +251,7 @@ 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 admin.dashboard se for admin, senão para home - if user.is_admin: - return redirect(url_for("admin.dashboard")) + # Redirecionar para home return redirect(url_for("home")) finally: db.close() diff --git a/create_test_users.py b/create_test_users.py new file mode 100644 index 0000000..5774f8c --- /dev/null +++ b/create_test_users.py @@ -0,0 +1,56 @@ +from functions.database import get_db_connection, Usuario, Role +from werkzeug.security import generate_password_hash + +def create_test_users(): + """Cria usuários de teste""" + db = get_db_connection() + try: + # Lista de usuários de teste + test_users = [ + { + 'username': 'aligner', + 'email': 'aligner@test.com', + 'password': 'Test123!@#', + 'is_admin': False + }, + { + 'username': 'tester', + 'email': 'tester@test.com', + 'password': 'Test123!@#', + 'is_admin': False + }, + { + 'username': 'deployer', + 'email': 'deployer@test.com', + 'password': 'Test123!@#', + 'is_admin': False + } + ] + + # Criar cada usuário + for user_data in test_users: + user = db.query(Usuario).filter_by(username=user_data['username']).first() + + if not user: + user = Usuario( + username=user_data['username'], + email=user_data['email'], + is_admin=user_data['is_admin'] + ) + user.set_password(user_data['password']) + db.add(user) + print(f"Usuário {user_data['username']} criado") + else: + print(f"Usuário {user_data['username']} já existe") + + db.commit() + print("Usuários de teste criados com sucesso") + + except Exception as e: + print(f"Erro ao criar usuários de teste: {str(e)}") + db.rollback() + finally: + db.close() + +if __name__ == "__main__": + create_test_users() \ No newline at end of file diff --git a/routes/admin.py b/routes/admin.py index f9631db..232e307 100644 --- a/routes/admin.py +++ b/routes/admin.py @@ -9,6 +9,7 @@ import secrets from functools import wraps from sqlalchemy.exc import SQLAlchemyError import logging +from datetime import datetime logger = logging.getLogger(__name__) @@ -30,6 +31,8 @@ def dashboard(): """Dashboard principal da área administrativa com lista de usuários""" db = get_db_connection() try: + now = datetime.now() + # Carregar estatísticas relevantes total_users = db.query(Usuario).count() active_users = db.query(Usuario).filter(Usuario.is_active == True).count() @@ -46,7 +49,8 @@ def dashboard(): total_users=total_users, active_users=active_users, inactive_users=inactive_users, - users=users + users=users, + now=now ) except SQLAlchemyError as e: logger.error(f"Erro ao buscar dados do dashboard: {str(e)}") @@ -111,16 +115,14 @@ def toggle_user_status(user_id): try: user = db.query(Usuario).get(user_id) if not user: - return jsonify({'success': False, 'message': 'Usuário não encontrado.'}) + flash('Usuário não encontrado.', 'danger') + return redirect(url_for('admin.dashboard')) user.is_active = not user.is_active db.commit() status = 'ativado' if user.is_active else 'desativado' - return jsonify({ - 'success': True, - 'message': f'Usuário {status} com sucesso.', - 'new_status': user.is_active - }) + flash(f'Usuário {status} com sucesso.', 'success') + return redirect(url_for('admin.dashboard')) finally: db.close() \ No newline at end of file diff --git a/templates/admin/dashboard.html b/templates/admin/dashboard.html index 9931243..1ce3ae5 100644 --- a/templates/admin/dashboard.html +++ b/templates/admin/dashboard.html @@ -2,115 +2,225 @@ {% block title %}Dashboard Administrativo{% endblock %} +{% block extra_css %} + +{% endblock %} + {% block content %} +
{{ total_users }}
- +{{ active_users }}
- +{{ inactive_users }}
- +| Nome | -Status | -Último Login | -Ações | -|||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ user.email }} | -{{ user.name }} | -- - {{ "Ativo" if user.is_active else "Inativo" }} - - | -{{ user.last_login.strftime('%d/%m/%Y %H:%M') if user.last_login else 'Nunca' }} | -
+
+
+
+
+
|
+