Skip to content

Commit 0323ca3

Browse files
haoxianruigitee-org
authored andcommitted
!51 fix(user): 用户管理页面不可删除当前登录账户
Merge pull request !51 from 萌狼蓝天/master
2 parents bb51238 + 1cd1540 commit 0323ca3

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

src/views/system/user/index.vue

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ import RoleAPI from "@/api/system/role-api";
253253
254254
import DeptTree from "./components/DeptTree.vue";
255255
import UserImport from "./components/UserImport.vue";
256-
256+
import { useUserStore } from "@/store";
257+
const userStore = useUserStore();
257258
defineOptions({
258259
name: "User",
259260
inheritAttrs: false,
@@ -425,6 +426,33 @@ const handleSubmit = useDebounceFn(() => {
425426
});
426427
}, 1000);
427428
429+
/**
430+
* 检查是否删除当前登录用户
431+
* @param singleId 单个删除的用户ID
432+
* @param selectedIds 批量删除的用户ID数组
433+
* @param currentUserInfo 当前用户信息
434+
* @returns 是否包含当前用户
435+
*/
436+
function isDeletingCurrentUser(
437+
singleId?: number,
438+
selectedIds: number[] = [],
439+
currentUserInfo?: any
440+
): boolean {
441+
if (!currentUserInfo?.userId) return false;
442+
443+
// 单个删除检查
444+
if (singleId && singleId.toString() === currentUserInfo.userId) {
445+
return true;
446+
}
447+
448+
// 批量删除检查
449+
if (!singleId && selectedIds.length > 0) {
450+
return selectedIds.map(String).includes(currentUserInfo.userId);
451+
}
452+
453+
return false;
454+
}
455+
428456
/**
429457
* 删除用户
430458
*
@@ -437,12 +465,19 @@ function handleDelete(id?: number) {
437465
return;
438466
}
439467
468+
// 安全检查:防止删除当前登录用户
469+
const currentUserInfo = userStore.userInfo;
470+
if (isDeletingCurrentUser(id, selectIds.value, currentUserInfo)) {
471+
ElMessage.error("不能删除当前登录用户");
472+
return;
473+
}
474+
440475
ElMessageBox.confirm("确认删除用户?", "警告", {
441476
confirmButtonText: "确定",
442477
cancelButtonText: "取消",
443478
type: "warning",
444479
}).then(
445-
function () {
480+
() => {
446481
loading.value = true;
447482
UserAPI.deleteByIds(userIds)
448483
.then(() => {
@@ -451,7 +486,7 @@ function handleDelete(id?: number) {
451486
})
452487
.finally(() => (loading.value = false));
453488
},
454-
function () {
489+
() => {
455490
ElMessage.info("已取消删除");
456491
}
457492
);

0 commit comments

Comments
 (0)