from app.api import bp_user from flask import request, jsonify from flask_jwt_extended import jwt_required, get_jwt_identity, get_jwt from flasgger import swag_from import app.messages.api_errors as errors from app.doc.user_swag import update_swagger from app.services.user import logout_service, update_user_service @bp_user.route("/update", methods=["PUT"]) @swag_from(update_swagger) @jwt_required() def update_user(): data = request.get_json() possible_fields = ["new_username", "new_displayname", "new_email", "new_password"] selected_fields = [field for field in possible_fields if field in data] if not selected_fields: result, status_code = errors.NO_FIELD_PROVIDED(possible_fields) return jsonify(result), status_code user_id = get_jwt_identity() new_username = data.get("new_username") new_displayname = data.get("new_displayname") new_email = data.get("new_email") new_password = data.get("new_password") result, status_code = update_user_service.update_user(user_id, new_username, new_displayname, new_email, new_password) if status_code < 300: jwt = get_jwt() logout_service.logout(jwt, user_id, False) return result, status_code