fix(admin): resolve user ids for role updates

This commit is contained in:
yun-zhi-ztl 2026-03-15 13:44:07 +08:00
parent 149f811b43
commit 6a53a6f6c7
3 changed files with 32 additions and 8 deletions

View file

@ -95,8 +95,8 @@ error.deviceAuth.userCode.invalid=无效或已过期的用户验证码
error.deviceAuth.deviceCode.expired=设备验证码已过期
error.deviceAuth.deviceCode.invalid=设备验证码无效或已过期
error.deviceAuth.deviceCode.used=设备验证码已被使用
error.admin.user.notFound=鐢ㄦ埛涓嶅瓨鍦細{0}
error.admin.user.role.invalid=鏃犳晥鐨勮鑹诧細{0}
error.admin.user.role.superAdmin.assignDenied=鍙湁 SUPER_ADMIN 鍙互鍒嗛厤 SUPER_ADMIN 瑙掕壊
error.admin.user.status.invalid=鏃犳晥鐨勭敤鎴风姸鎬侊細{0}
error.admin.user.status.unsupported=杩欓噷鍙厑璁告寜 ACTIVE 鎴?DISABLED 绠$悊鐢ㄦ埛鐘舵€?
error.admin.user.notFound=用户不存在:{0}
error.admin.user.role.invalid=无效的角色:{0}
error.admin.user.role.superAdmin.assignDenied=只有 SUPER_ADMIN 可以分配 SUPER_ADMIN 角色
error.admin.user.status.invalid=无效的用户状态:{0}
error.admin.user.status.unsupported=这里只允许管理 ACTIVE 或 DISABLED 状态的用户

View file

@ -13,7 +13,6 @@ import type {
MergeVerifyRequest,
ReviewTask,
PromotionTask,
AdminUser,
AuditLogItem,
SkillSummary,
AuthMethod,
@ -564,9 +563,34 @@ export const adminApi = {
if (params.status) searchParams.set('status', params.status)
searchParams.set('page', String(params.page ?? 0))
searchParams.set('size', String(params.size ?? 20))
return fetchJson<{ items: AdminUser[]; total: number; page: number; size: number }>(
const response = await fetchJson<{
items: Array<{
id: string
username: string
email?: string
platformRoles?: string[]
status: string
createdAt: string
}>
total: number
page: number
size: number
}>(
`/api/v1/admin/users?${searchParams.toString()}`,
)
return {
...response,
items: response.items
.filter((user) => user.id && user.username && user.status && user.createdAt)
.map((user) => ({
userId: user.id,
username: user.username,
email: user.email,
platformRoles: user.platformRoles ?? [],
status: user.status,
createdAt: user.createdAt,
})),
}
},
async updateUserRole(userId: string, role: string): Promise<void> {

View file

@ -240,7 +240,7 @@ export function AdminUsersPage() {
<Select id="role" value={newRole} onChange={(e) => setNewRole(e.target.value)}>
<option value="">{t('adminUsers.selectRole')}</option>
<option value="USER">{t('adminUsers.roleUser')}</option>
<option value="REVIEWER">{t('adminUsers.roleReviewer')}</option>
<option value="SKILL_ADMIN">{t('adminUsers.roleReviewer')}</option>
<option value="USER_ADMIN">{t('adminUsers.roleUserAdmin')}</option>
<option value="AUDITOR">{t('adminUsers.roleAuditor')}</option>
<option value="SUPER_ADMIN">{t('adminUsers.roleSuperAdmin')}</option>