[0.2.8.11][ci]
This commit is contained in:
@@ -71,33 +71,62 @@ def set_session_key(request):
|
||||
request.session["session_enc_key_b64"] = base64.b64encode(key_bytes).decode("ascii")
|
||||
return JsonResponse({"ok": True})
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@ensure_csrf_cookie
|
||||
def profile_page(request):
|
||||
def _build_profile_context(request):
|
||||
session_user_id = request.session.get("user_id")
|
||||
if session_user_id is None:
|
||||
return redirect("/accounts/login/")
|
||||
|
||||
# 获取用户信息
|
||||
return None
|
||||
user = get_user_by_id(session_user_id)
|
||||
if not user:
|
||||
return redirect("/accounts/login/")
|
||||
|
||||
# 获取个人提交的成就(图片)
|
||||
return None
|
||||
from elastic.es_connect import search_all
|
||||
from elastic.views import _attach_image_urls
|
||||
|
||||
raw_results = [r for r in search_all() if str(r.get("writer_id", "")) == str(session_user_id)]
|
||||
achievements = _attach_image_urls(request, raw_results)
|
||||
|
||||
permission_name = "管理员" if int(user.get("permission", 1)) == 0 else "普通用户"
|
||||
|
||||
context = {
|
||||
return {
|
||||
"username": request.session.get("username"),
|
||||
"profile_user": user,
|
||||
"permission_name": permission_name,
|
||||
"achievements": achievements,
|
||||
}
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@ensure_csrf_cookie
|
||||
def profile_page(request):
|
||||
context = _build_profile_context(request)
|
||||
if context is None:
|
||||
return redirect("/accounts/login/")
|
||||
context["subpage"] = ""
|
||||
return render(request, "accounts/profile.html", context)
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@ensure_csrf_cookie
|
||||
def profile_username_page(request):
|
||||
context = _build_profile_context(request)
|
||||
if context is None:
|
||||
return redirect("/accounts/login/")
|
||||
context["subpage"] = "username"
|
||||
context["subpage_title"] = "修改用户名"
|
||||
return render(request, "accounts/profile.html", context)
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@ensure_csrf_cookie
|
||||
def profile_password_page(request):
|
||||
context = _build_profile_context(request)
|
||||
if context is None:
|
||||
return redirect("/accounts/login/")
|
||||
context["subpage"] = "password"
|
||||
context["subpage_title"] = "修改密码"
|
||||
return render(request, "accounts/profile.html", context)
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@ensure_csrf_cookie
|
||||
def profile_registration_code_page(request):
|
||||
context = _build_profile_context(request)
|
||||
if context is None:
|
||||
return redirect("/accounts/login/")
|
||||
context["subpage"] = "registration-code"
|
||||
context["subpage_title"] = "替换注册码"
|
||||
return render(request, "accounts/profile.html", context)
|
||||
|
||||
@require_http_methods(["POST"])
|
||||
@@ -304,6 +333,34 @@ def replace_registration_code_view(request):
|
||||
return JsonResponse({"ok": False, "message": "替换失败"}, status=500)
|
||||
return JsonResponse({"ok": True})
|
||||
|
||||
@require_http_methods(["POST"])
|
||||
@csrf_protect
|
||||
def update_profile_username_view(request):
|
||||
session_user_id = request.session.get("user_id")
|
||||
if session_user_id is None:
|
||||
return JsonResponse({"ok": False, "message": "未登录"}, status=401)
|
||||
try:
|
||||
payload = json.loads(request.body.decode("utf-8"))
|
||||
except json.JSONDecodeError:
|
||||
return JsonResponse({"ok": False, "message": "JSON无效"}, status=400)
|
||||
new_username = (payload.get("username") or "").strip()
|
||||
if not new_username:
|
||||
return JsonResponse({"ok": False, "message": "请输入用户名"}, status=400)
|
||||
if len(new_username) > 50:
|
||||
return JsonResponse({"ok": False, "message": "用户名过长"}, status=400)
|
||||
me = get_user_by_id(session_user_id) or {}
|
||||
if str(me.get("username", "")).strip() == new_username:
|
||||
request.session["username"] = new_username
|
||||
return JsonResponse({"ok": True, "username": new_username})
|
||||
existing = es_get_user_by_username(new_username)
|
||||
if existing and str(existing.get("user_id")) != str(session_user_id):
|
||||
return JsonResponse({"ok": False, "message": "用户名已存在"}, status=409)
|
||||
ok = update_user_by_id(session_user_id, username=new_username)
|
||||
if not ok:
|
||||
return JsonResponse({"ok": False, "message": "修改失败"}, status=500)
|
||||
request.session["username"] = new_username
|
||||
return JsonResponse({"ok": True, "username": new_username})
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def registration_code_preview_view(request):
|
||||
session_user_id = request.session.get("user_id")
|
||||
|
||||
Reference in New Issue
Block a user