AlistGo / AlistGo/alist-web

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

Aperta
#312 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
479
Fork
703
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

### 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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.