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) }