"""登录认证。""" import os from functools import wraps from flask import Blueprint, request, session, redirect, url_for bp = Blueprint("auth", __name__) def _get_admin_creds(): return ( os.environ.get("SM_ADMIN_USER", "admin"), os.environ.get("SM_ADMIN_PASSWORD", ""), ) def login_required(f): @wraps(f) def decorated(*args, **kwargs): if not session.get("logged_in"): if request.path.startswith("/api/"): return {"error": "unauthorized"}, 401 return redirect(url_for("auth.login", next=request.url)) return f(*args, **kwargs) return decorated @bp.route("/login", methods=["GET", "POST"]) def login(): if session.get("logged_in"): return redirect(url_for("web.index")) if request.method == "POST": u, p = _get_admin_creds() form_user = request.form.get("username", "") form_pwd = request.form.get("password", "") if form_user == u and form_pwd == p: session["logged_in"] = True session.permanent = True return redirect(request.args.get("next") or url_for("web.index")) return {"error": "用户名或密码错误"}, 401 return _render_login() @bp.route("/logout") def logout(): session.clear() return redirect(url_for("auth.login")) def _render_login(): return """ 登录 · SOCKS Manager

SOCKS Manager

SOCKS5 代理管理平台

"""