user reoutes

manzilcheck
fine4me 6 months ago
parent 0ba527a3fa
commit aff6d939ca
  1. 43
      backend/blueprints/admin/__init__.py

@ -1,5 +1,5 @@
from utils .auth import auth_required, requires_role from utils .auth import auth_required, requires_role
from flask import Blueprint, jsonify, g from flask import Blueprint, jsonify, g,url_for
from db.model import User, Course, Enrollment, Chat, db from db.model import User, Course, Enrollment, Chat, db
from sqlalchemy import select, func, desc, and_ from sqlalchemy import select, func, desc, and_
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -141,3 +141,44 @@ def get_discussion_stats():
return jsonify({'message': f'An error occurred: {str(e)}'}), 500 return jsonify({'message': f'An error occurred: {str(e)}'}), 500
@admin.route('/stats/userDetail', methods=['GET'])
@auth_required()
@requires_role([UserRole.ADMIN])
def get_user_details():
"""
Get detailed information for all users.
Only accessible by admin users.
"""
try:
current_user: User = g.current_user
# Get all users with basic info
users = db.session.execute(
select(User)
.order_by(desc(User.joinedDate))
).scalars()
# Format user data
user_list = [{
'id': str(user.id),
'username': user.username,
'email': user.email,
'firstName': user.firstName,
'lastName': user.lastName,
'profilePicture': url_for('send_file', filename=current_user.pfpFilename, _external=True),
'bio': user.bio,
'role': user.role,
'isActivated': user.isActivated,
'joinedDate': user.joinedDate.isoformat(),
'lastOnline': user.lastOnline.isoformat(),
'dateOfBirth': user.dob.isoformat() if user.dob else None
} for user in users]
return jsonify({
'users': user_list,
'count': len(user_list)
}), 200
except Exception as e:
return jsonify({'message': f'An error occurred: {str(e)}'}), 500

Loading…
Cancel
Save