feat: 用户等级改为下拉选择 + 禁止修改管理员/提升为管理员

- Users.vue: ElMessageBox.prompt → el-dialog + el-select 下拉
- Users.vue: 管理员行隐藏设置按钮,显示标签文本
- AdminController: 拒绝修改 MANAGER 账户等级,拒绝提升为 ADMIN
- 信任等级显示改为中文标签
This commit is contained in:
mediabot-pt
2026-06-29 14:51:36 +08:00
parent 7575d65428
commit 40f1da1e2b
2 changed files with 69 additions and 17 deletions

View File

@@ -120,7 +120,7 @@ public class AdminController {
}
/**
* 设置用户信任等级
* 设置用户信任等级(禁止修改管理员、禁止提升为管理员)
*/
@PostMapping("/accounts/{accountId}/trust-level")
public ApiResponse<Void> setTrustLevel(
@@ -130,13 +130,24 @@ public class AdminController {
checkAdmin(request);
var account = accountMapper.selectById(accountId);
if (account == null) {
var target = accountMapper.selectById(accountId);
if (target == null) {
return ApiResponse.error(404, "Account not found");
}
account.setTrustLevel(TrustLevel.fromValue(level));
accountMapper.updateById(account);
// 禁止修改管理员
if (target.getTrustLevel() == TrustLevel.ADMIN) {
return ApiResponse.error(403, "不能修改管理员账户的信任等级");
}
// 禁止将用户设置为管理员
TrustLevel newLevel = TrustLevel.fromValue(level);
if (newLevel == TrustLevel.ADMIN) {
return ApiResponse.error(403, "不能通过此接口提升为管理员,请直接操作数据库");
}
target.setTrustLevel(newLevel);
accountMapper.updateById(target);
log.info("Trust level updated: accountId={}, level={}", accountId, level);
return ApiResponse.success();