From 683973bd4fa30c66629d583168262e3fe3f9f708 Mon Sep 17 00:00:00 2001 From: keqingmoe Date: Sat, 28 Dec 2024 22:30:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95=E5=92=8C?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E5=AD=98=E5=9C=A8=E6=80=A7?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=EF=BC=8C=E6=94=B9=E8=BF=9B=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/db/auth.cpp | 4 ++-- src/server/auth/repasswd.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/db/auth.cpp b/src/db/auth.cpp index 4c235a5..6030e69 100644 --- a/src/db/auth.cpp +++ b/src/db/auth.cpp @@ -86,7 +86,7 @@ extern "C" auto value = std::string{}; auto status = user_db->Get(leveldb::ReadOptions{}, mangle_user_id(user_id), &value); if (!status.ok()) { - std::println(stderr, "Failed to login: {}", status.ToString()); + if (!status.IsNotFound()) std::println(stderr, "Failed to login: {}", status.ToString()); return 0; } *result = validate_password(password, value.data()); @@ -132,7 +132,7 @@ extern "C" if (status.ok()) { *result = std::stoi(value); } else { - std::println(stderr, "Failed to get user permission: {}", status.ToString()); + if (!status.IsNotFound()) std::println(stderr, "Failed to get user permission: {}", status.ToString()); return 0; } return 1; diff --git a/src/server/auth/repasswd.c b/src/server/auth/repasswd.c index 51d4a86..fe64a37 100644 --- a/src/server/auth/repasswd.c +++ b/src/server/auth/repasswd.c @@ -77,15 +77,21 @@ static void impl_self(mg_connection* conn, const char* user_id, repasswd_form_t* static void impl_others(mg_connection* conn, const char* user_id, repasswd_form_t* form) { - int perm1; - int flag = get_user_permission(user_id, &perm1); + int result1, result2; + int flag = check_user_exists(user_id, &result1); + flag &= check_user_exists(form->user_id, &result2); if (!flag) { - res_check_permission_fail(conn); + res_check_exist_fail(conn); + return; + } + if (!(result1 && result2)) { + res_not_exist(conn); return; } - int perm2; - flag = get_user_permission(form->user_id, &perm2); + int perm1, perm2; + flag = get_user_permission(user_id, &perm1); + flag &= get_user_permission(form->user_id, &perm2); if (!flag) { res_check_permission_fail(conn); return;