!51 fix(user): 用户管理页面不可删除当前登录账户
Merge pull request !51 from 萌狼蓝天/master
This commit is contained in:
@@ -253,7 +253,8 @@ import RoleAPI from "@/api/system/role-api";
|
||||
|
||||
import DeptTree from "./components/DeptTree.vue";
|
||||
import UserImport from "./components/UserImport.vue";
|
||||
|
||||
import { useUserStore } from "@/store";
|
||||
const userStore = useUserStore();
|
||||
defineOptions({
|
||||
name: "User",
|
||||
inheritAttrs: false,
|
||||
@@ -425,6 +426,33 @@ const handleSubmit = useDebounceFn(() => {
|
||||
});
|
||||
}, 1000);
|
||||
|
||||
/**
|
||||
* 检查是否删除当前登录用户
|
||||
* @param singleId 单个删除的用户ID
|
||||
* @param selectedIds 批量删除的用户ID数组
|
||||
* @param currentUserInfo 当前用户信息
|
||||
* @returns 是否包含当前用户
|
||||
*/
|
||||
function isDeletingCurrentUser(
|
||||
singleId?: number,
|
||||
selectedIds: number[] = [],
|
||||
currentUserInfo?: any
|
||||
): boolean {
|
||||
if (!currentUserInfo?.userId) return false;
|
||||
|
||||
// 单个删除检查
|
||||
if (singleId && singleId.toString() === currentUserInfo.userId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 批量删除检查
|
||||
if (!singleId && selectedIds.length > 0) {
|
||||
return selectedIds.map(String).includes(currentUserInfo.userId);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
*
|
||||
@@ -437,12 +465,19 @@ function handleDelete(id?: number) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 安全检查:防止删除当前登录用户
|
||||
const currentUserInfo = userStore.userInfo;
|
||||
if (isDeletingCurrentUser(id, selectIds.value, currentUserInfo)) {
|
||||
ElMessage.error("不能删除当前登录用户");
|
||||
return;
|
||||
}
|
||||
|
||||
ElMessageBox.confirm("确认删除用户?", "警告", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(
|
||||
function () {
|
||||
() => {
|
||||
loading.value = true;
|
||||
UserAPI.deleteByIds(userIds)
|
||||
.then(() => {
|
||||
@@ -451,7 +486,7 @@ function handleDelete(id?: number) {
|
||||
})
|
||||
.finally(() => (loading.value = false));
|
||||
},
|
||||
function () {
|
||||
() => {
|
||||
ElMessage.info("已取消删除");
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user