diff --git a/docker/.env b/docker/.env index 053aae9..ef91484 100644 --- a/docker/.env +++ b/docker/.env @@ -79,6 +79,9 @@ RAGFLOW_IMAGE=zstar1003/ragflowplus:v0.2.0 # The local time zone. TIMEZONE='Asia/Shanghai' +# 后端允许上传的最大文件大小 +MAX_CONTENT_LENGTH=10737418240 # 10GB + # 管理系统用户名和密码 MANAGEMENT_ADMIN_USERNAME=admin MANAGEMENT_ADMIN_PASSWORD=12345678 diff --git a/management/server/routes/users/routes.py b/management/server/routes/users/routes.py index 68808f8..ee9283c 100644 --- a/management/server/routes/users/routes.py +++ b/management/server/routes/users/routes.py @@ -1,5 +1,5 @@ from flask import jsonify, request -from services.users.service import get_users_with_pagination, delete_user, create_user, update_user +from services.users.service import get_users_with_pagination, delete_user, create_user, update_user, reset_user_password from .. import users_bp @users_bp.route('', methods=['GET']) @@ -71,4 +71,39 @@ def get_current_user(): "roles": ["admin"] }, "message": "获取用户信息成功" - }) \ No newline at end of file + }) + +@users_bp.route('//reset-password', methods=['PUT']) +def reset_password_route(user_id): + """ + 重置用户密码的API端点 + Args: + user_id (str): 需要重置密码的用户ID + Returns: + Response: JSON响应 + """ + try: + data = request.json + new_password = data.get('password') + + # 校验密码是否存在 + if not new_password: + return jsonify({"code": 400, "message": "缺少新密码参数 'password'"}), 400 + + # 调用 service 函数重置密码 + success = reset_user_password(user_id=user_id, new_password=new_password) + + if success: + return jsonify({ + "code": 0, + "message": f"用户密码重置成功" + }) + else: + # service 层可能因为用户不存在或其他原因返回 False + return jsonify({"code": 404, "message": f"用户未找到或密码重置失败"}), 404 + except Exception as e: + # 统一处理异常 + return jsonify({ + "code": 500, + "message": f"重置密码失败: {str(e)}" + }), 500 \ No newline at end of file diff --git a/management/server/services/knowledgebases/service.py b/management/server/services/knowledgebases/service.py index 1af57a1..d670695 100644 --- a/management/server/services/knowledgebases/service.py +++ b/management/server/services/knowledgebases/service.py @@ -229,7 +229,7 @@ class KnowledgebaseService: # 设置默认值 default_parser_config = json.dumps({ - "layout_recognize": "DeepDOC", + "layout_recognize": "MinerU", "chunk_token_num": 512, "delimiter": "\n!?;。;!?", "auto_keywords": 0, @@ -557,7 +557,7 @@ class KnowledgebaseService: # 设置默认值 default_parser_id = "naive" default_parser_config = json.dumps({ - "layout_recognize": "DeepDOC", + "layout_recognize": "MinerU", "chunk_token_num": 512, "delimiter": "\n!?;。;!?", "auto_keywords": 0, diff --git a/management/server/services/users/service.py b/management/server/services/users/service.py index d8e871c..e25e0b6 100644 --- a/management/server/services/users/service.py +++ b/management/server/services/users/service.py @@ -287,4 +287,61 @@ def update_user(user_id, user_data): return True except mysql.connector.Error as err: print(f"更新用户错误: {err}") + return False + +def reset_user_password(user_id, new_password): + """ + 重置指定用户的密码 + Args: + user_id (str): 用户ID + new_password (str): 新的明文密码 + Returns: + bool: 操作是否成功 + """ + try: + conn = mysql.connector.connect(**DB_CONFIG) + cursor = conn.cursor() + + # 加密新密码 + encrypted_password = encrypt_password(new_password) # 使用与创建用户时相同的加密方法 + update_time = int(datetime.now().timestamp() * 1000) + update_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + # 更新用户密码 + update_query = """ + UPDATE user + SET password = %s, update_time = %s, update_date = %s + WHERE id = %s + """ + cursor.execute(update_query, (encrypted_password, update_time, update_date, user_id)) + + # 检查是否有行被更新 + if cursor.rowcount == 0: + conn.rollback() # 如果没有更新,回滚 + cursor.close() + conn.close() + print(f"用户 {user_id} 未找到,密码未更新。") + return False # 用户不存在 + + conn.commit() # 提交事务 + cursor.close() + conn.close() + print(f"用户 {user_id} 密码已成功重置。") + return True + + except mysql.connector.Error as err: + print(f"重置密码时数据库错误: {err}") + # 可以在这里添加更详细的日志记录 + # 如果 conn 存在且打开,尝试回滚 + if 'conn' in locals() and conn.is_connected(): + conn.rollback() + cursor.close() + conn.close() + return False + except Exception as e: + print(f"重置密码时发生未知错误: {e}") + if 'conn' in locals() and conn.is_connected(): + conn.rollback() + cursor.close() + conn.close() return False \ No newline at end of file diff --git a/management/web/src/common/apis/tables/index.ts b/management/web/src/common/apis/tables/index.ts index d2018b9..7a9ed4e 100644 --- a/management/web/src/common/apis/tables/index.ts +++ b/management/web/src/common/apis/tables/index.ts @@ -35,3 +35,17 @@ export function getTableDataApi(params: Tables.TableRequestData) { params }) } + +/** + * 重置用户密码 + * @param userId 用户ID + * @param password 新密码 + * @returns BaseResponse + */ +export function resetPasswordApi(userId: number, password: string) { + return request({ + url: `api/v1/users/${userId}/reset-password`, + method: "put", + data: { password } // 发送新密码 + }) +} diff --git a/management/web/src/pages/user-management/index.vue b/management/web/src/pages/user-management/index.vue index ec30392..692c953 100644 --- a/management/web/src/pages/user-management/index.vue +++ b/management/web/src/pages/user-management/index.vue @@ -1,9 +1,9 @@