# myapp/services/auth_service.py import os, uuid, json from flask import current_app, session def create_user_json(username: str): user_dir = current_app.config["USER_DATA_DIR"] os.makedirs(user_dir, exist_ok=True) path = os.path.join(user_dir, f"{username}.json") if not os.path.exists(path): with open(path, "w", encoding="utf-8") as f: json.dump({"username": username}, f, ensure_ascii=False) def register_user(username: str, password: str, *, teacher: bool=False): users_list = current_app.extensions["users_list"] # 你原逻辑似乎把 has_user 的判断反了:直觉上「不存在才允许新增」 exists = users_list.has_user(username) if exists: return False, "用户已存在,请更换用户名" users_list.add_user(username, password, teacher=teacher) create_user_json(username) return True, "注册成功" def login_user(username: str, password: str, *, require_teacher: bool=False): users_list = current_app.extensions["users_list"] pswd = users_list.get_user_pswd(username) if pswd is None or pswd != password: return False, "用户名或密码错误" if require_teacher: is_teacher = users_list.get_user_is_teacher(username) if not is_teacher: return False, "用户名不存在或非教师账号" # 设置会话 + 关联映射 user_uuid = "user_" + str(uuid.uuid4()) session["user_id"] = user_uuid username2uuid = current_app.extensions["username2uuid"] uuid2username = current_app.extensions["uuid2username"] username2uuid[username] = user_uuid uuid2username[user_uuid] = username return True, "登录成功" def logout_user(): session.pop("user_id", None)