"""Auth API.""" from flask import Blueprint, jsonify, request from auth import get_current_user, issue_token from models import User bp = Blueprint("auth", __name__, url_prefix="/api/auth") @bp.route("/login", methods=["POST"]) def login(): data = request.get_json(silent=True) or {} username = (data.get("username") or "").strip() password = data.get("password") or "" user = User.query.filter_by(username=username).first() if not user or not user.check_password(password): return jsonify({"error": "用户名或密码错误"}), 401 return jsonify({"token": issue_token(user), "username": user.username}) @bp.route("/me") def me(): user = get_current_user() if not user: return jsonify({"error": "未登录"}), 401 return jsonify({"username": user.username}) @bp.route("/password", methods=["POST"]) def change_password(): user = get_current_user() if not user: return jsonify({"error": "未登录"}), 401 data = request.get_json(silent=True) or {} old = data.get("old_password") or "" new = data.get("new_password") or "" if not user.check_password(old): return jsonify({"error": "原密码错误"}), 400 if len(new) < 6: return jsonify({"error": "新密码至少 6 位"}), 400 from extensions import db user.set_password(new) db.session.commit() return jsonify({"message": "密码已修改"})