Version 0.1.1 rise to flask app factory

This commit is contained in:
CakeCN
2025-08-27 19:39:38 +08:00
parent 8dba8688a7
commit 5c0187bc4b
55 changed files with 1708 additions and 613 deletions

View File

@@ -0,0 +1,46 @@
# 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)