AlistGo / AlistGo/alist-web

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

Abierto
#312 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
479
Forks
703
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.