AlistGo / AlistGo/alist-web

User role select only allows single role despite multi-select UI

未关闭
#312 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
TypeScript
星标
479
派生
703
PR 合并指标
30 天内没有已合并 PR

描述

### Describe the bug
The role selector in the Edit/Add User page (`src/pages/manage/users/AddOrEdit.tsx`) renders a multi-select UI (tags with close buttons, checkbox indicators per option), but the underlying `onClick` handler for each `SelectOption` always replaces the entire `role` array with only the clicked role, instead of appending to it.

### Where
`src/pages/manage/users/AddOrEdit.tsx`, inside the role `Select` component:

```tsx
{
// 单选逻辑:如果已选中则移除,否则替换为当前选择
const newRoles = user.role.includes(role.id)
? user.role.filter((id) => id !== role.id)
: [role.id] // 只保留当前选择的角色
setUser("role", newRoles)
}}
>
```

The comment explicitly says "single-select logic" — this appears to be leftover single-select behavior that was never updated when the backend added multi-role support (PR #9215 in AlistGo/alist).

### Expected behavior
Clicking an unselected role should add it to the existing `user.role` array (multi-select), matching the UI (tags, close buttons) that's already built for it:

```tsx
onClick={() => {
const newRoles = user.role.includes(role.id)
? user.role.filter((id) => id !== role.id)
: [...user.role, role.id]
setUser("role", newRoles)
}}
```

### Steps to reproduce
1. Go to admin panel → Users → Edit an existing user
2. Click on Role field, select Role A
3. Click Role B — Role A is silently removed and only Role B remains selected

### Environment
- Alist backend version: v3.64.0
- Backend confirmed to support multi-role per user (see alist-org/alist PR #9215)
- Bug is frontend-only (alist-web)

Happy to submit a PR with the fix above if maintainers confirm this is the intended multi-select behavior.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。