From dd0005b7ba4b13f56821b0c61619be65afcb3bad Mon Sep 17 00:00:00 2001 From: tianmo Date: Mon, 19 Oct 2026 16:27:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E9=99=A4=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pages/users.vue | 15 +++++++++++++-- .../api/admin/users/[id]/clear-password.post.ts | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/pages/users.vue b/app/pages/users.vue index 188c7cd..00daf89 100644 --- a/app/pages/users.vue +++ b/app/pages/users.vue @@ -7,7 +7,15 @@ interface AdminUser { password_reset: number } -const { isChecking, isAuthenticated, isAdmin, checkSession, fetchStatus, handleAuthError } = useAuth() +const { + isChecking, + isAuthenticated, + isAdmin, + checkSession, + fetchStatus, + handleAuthError, + getFetchErrorMessage +} = useAuth() const toast = useToast() const { t } = useI18n() @@ -42,7 +50,10 @@ async function clearPassword(user: AdminUser) { await loadUsers() } catch (error: unknown) { handleAuthError(error) - toast.add({ title: t('users.clearFailed'), color: 'error' }) + toast.add({ + title: getFetchErrorMessage(error, t('users.clearFailed')), + color: 'error' + }) } } diff --git a/server/api/admin/users/[id]/clear-password.post.ts b/server/api/admin/users/[id]/clear-password.post.ts index 4d78ad9..8f924b1 100644 --- a/server/api/admin/users/[id]/clear-password.post.ts +++ b/server/api/admin/users/[id]/clear-password.post.ts @@ -11,6 +11,9 @@ export default defineEventHandler(async (event) => { if (!target) { createApiError(event, 'INVALID_REQUEST', '用户不存在', 404) } + if (target.role === 'admin') { + createApiError(event, 'FORBIDDEN', '不允许清除管理员账号', 403) + } if (target.id === operator.id) { createApiError(event, 'INVALID_REQUEST', '不能清除自己的密码', 400) }