feat(settings): admin-gated User Management tab via Navidrome REST API

Adds a dedicated Settings tab for managing Navidrome users (list, create,
edit, delete). Only visible to admins — gated by `/auth/login` probe on
mount. Uses Navidrome's native /api/user endpoints instead of Subsonic
(getUsers.view etc. return only the caller on Navidrome). All HTTP calls
go through new Rust commands to bypass WebView CORS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-19 23:35:14 +02:00
parent 69dd374e80
commit dc819f3a2c
11 changed files with 814 additions and 2 deletions
+29
View File
@@ -452,6 +452,34 @@ export const zhTranslation = {
testBtn: '测试连接',
testingBtn: '正在测试…',
serverCompatible: '兼容:Navidrome · Gonic · Airsonic · Subsonic',
userMgmtTitle: '用户管理',
userMgmtDesc: '管理此服务器上的用户。需要管理员权限。',
userMgmtNoAdmin: '需要管理员权限才能管理此服务器上的用户。',
userMgmtLoadError: '加载用户失败。',
userMgmtEmpty: '未找到用户。',
userMgmtYouBadge: '您',
userMgmtAdminBadge: '管理员',
userMgmtAddUser: '添加用户',
userMgmtAddUserTitle: '新建用户',
userMgmtEditUserTitle: '编辑用户',
userMgmtUsername: '用户名',
userMgmtName: '显示名称',
userMgmtEmail: '电子邮箱',
userMgmtPassword: '密码',
userMgmtPasswordEditHint: '输入新密码以更新。',
userMgmtRoleAdmin: '管理员',
userMgmtSave: '保存',
userMgmtCancel: '取消',
userMgmtDelete: '删除',
userMgmtEdit: '编辑',
userMgmtConfirmDelete: '删除用户 "{{username}}"?此操作无法撤销。',
userMgmtCreateError: '创建用户失败。',
userMgmtUpdateError: '更新用户失败。',
userMgmtDeleteError: '删除用户失败。',
userMgmtCreated: '用户已创建。',
userMgmtUpdated: '用户已更新。',
userMgmtDeleted: '用户已删除。',
userMgmtValidationMissing: '用户名、显示名称和密码均为必填项。',
audiomuseTitle: 'AudioMuse-AINavidrome',
audiomuseDesc:
'若此服务器已配置 <pluginLink>AudioMuse-AI Navidrome 插件</pluginLink>请开启。可从曲目启动即时混音,并在艺人页使用服务器返回的相似艺人,而非 Last.fm。',
@@ -610,6 +638,7 @@ export const zhTranslation = {
randomNavSplitDesc: '在侧边栏中将"随机混音"和"随机专辑"显示为独立条目,而非"创建混音"合并入口。',
tabInput: '输入',
tabServer: '服务器',
tabUsers: '用户',
tabSystem: '系统',
tabGeneral: '通用',
ratingsSectionTitle: '评分',