修复了User无法登录的bug

This commit is contained in:
CakeCN
2025-09-03 17:17:14 +08:00
parent fd6e12528c
commit a0dd8cd234
9 changed files with 55 additions and 54 deletions

View File

@@ -5,22 +5,21 @@ from ..services.backboard_service import realtime_response
bp = Blueprint("vscode", __name__)
@bp.route("/desktop/<user_id>/<course_id>/<chapter_id>")
def desktop(user_id, course_id, chapter_id):
# session 中放 uuid访客也能进则给一个
if "user_id" not in session:
session["user_id"] = "user_" + str(uuid.uuid4())
current_app.logger.debug("user %s uuid is %s", user_id, session["user_id"])
# 全局映射
@bp.route("/desktop/<user_uuid>/<course_id>/<chapter_id>")
def desktop(user_uuid, course_id, chapter_id):
username2uuid = current_app.extensions["username2uuid"]
uuid2username = current_app.extensions["uuid2username"]
userid_recorder = current_app.extensions["userid_recorder"]
# session 中放 uuid访客也能进则给一个
if "user_uuid" not in session:
user_uuid = "user_" + str(uuid.uuid4())
session["user_uuid"] = user_uuid
uuid2username[user_uuid] = "guest"+str(uuid.uuid4())
username2uuid[uuid2username[user_uuid]] = user_uuid
username2uuid[user_id] = session["user_id"]
uuid2username[session["user_id"]] = user_id
userid_recorder[f"{user_id}&{course_id}"] = session["user_id"]
# 全局映射
user_id = uuid2username[user_uuid]
userid_recorder[f"{user_id}&{course_id}"] = session["user_uuid"]
# 按课程/章节创建工作目录
base_root = current_app.config["STUDENT_WORKSPACE_ROOT"]
@@ -36,7 +35,7 @@ def desktop(user_id, course_id, chapter_id):
config_path = os.path.join(path_dir, ".config")
tmpd = {
"user_id": user_id,
"user_uuid": session["user_uuid"],
"course_id": course_id,
"chapter_id": chapter_id,
"path": path_for_vscode
@@ -49,17 +48,16 @@ def desktop(user_id, course_id, chapter_id):
return render_template(
"desktop.html",
vscode_web_url=current_app.config["VSCODE_WEB_URL"],
user_id=user_id, course_id=course_id, chapter_id=chapter_id,
user_uuid=session["user_uuid"], course_id=course_id, chapter_id=chapter_id,
workspace_path=path_for_vscode
)
@bp.route("/desktop_nouser/<course_id>/<chapter_id>")
def desktop_nouser(course_id, chapter_id):
if "user_id" not in session:
if "user_uuid" not in session:
return redirect(url_for("auth.login")) # 如果你有 auth 蓝图
user_uuid = session["user_id"]
username = current_app.extensions["uuid2username"].get(user_uuid)
return redirect(url_for("vscode.desktop", user_id=username, course_id=course_id, chapter_id=chapter_id))
user_uuid = session["user_uuid"]
return redirect(url_for("vscode.desktop", user_uuid=user_uuid, course_id=course_id, chapter_id=chapter_id))
@bp.route("/vscode_data", methods=["POST"])
def vscode_data():