20260721223033
This commit is contained in:
1 parent
bab8e2972f
commit
e9f099f044
26 files changed
+1687
-349
No files matched your search
@@ -11,26 +11,46 @@ export const usePermissionStore = defineStore("permissions", () => {
|
||||
|
||||
const moduleSet = computed(() => new Set(moduleCodes.value));
|
||||
const powerSet = computed(() => new Set(powerCodes.value));
|
||||
const isG3soft = computed(() => {
|
||||
const authStore = useAuthStore();
|
||||
return String(authStore.user?.account || "").trim().toLowerCase() === "g3soft";
|
||||
});
|
||||
|
||||
async function load() {
|
||||
const authStore = useAuthStore();
|
||||
const userId = String(authStore.user?.id || "");
|
||||
if (isG3soft.value) {
|
||||
loadedUserId.value = `g3soft:${userId}`;
|
||||
moduleCodes.value = [];
|
||||
powerCodes.value = [];
|
||||
return;
|
||||
}
|
||||
if (!/^\d+$/.test(userId)) throw new Error("登录用户 ID 无效,请重新登录");
|
||||
if (loadedUserId.value === userId) return;
|
||||
if (loadingPromise.value) return loadingPromise.value;
|
||||
|
||||
loadingPromise.value = Promise.all([
|
||||
loadDataApi("b_module", "b_canuse = 1", "b_id ASC"),
|
||||
loadDataApi("b_user_module", `b_user_id = ${userId}`, "b_id ASC"),
|
||||
loadDataApi("b_user_power", `b_user_id = ${userId}`, "b_id ASC"),
|
||||
loadDataApi("b_module_power", "b_canuse = 1", "b_id ASC"),
|
||||
])
|
||||
.then(([userModules, userPowers, powers]) => {
|
||||
.then(([modules, userModules, userPowers, powers]) => {
|
||||
const moduleCodeById = new Map(
|
||||
modules.data.map((module) => [String(module.b_id), module.b_code]),
|
||||
);
|
||||
const powerById = new Map(powers.data.map((power) => [String(power.b_id), power]));
|
||||
moduleCodes.value = userModules.data.map((item) => item.b_module_id);
|
||||
moduleCodes.value = userModules.data
|
||||
.map((item) => moduleCodeById.get(String(item.b_module_id)))
|
||||
.filter(Boolean);
|
||||
powerCodes.value = userPowers.data
|
||||
.map((item) => powerById.get(String(item.b_power_id)))
|
||||
.filter(Boolean)
|
||||
.map((power) => `${power.b_module_id}.${power.b_code}`);
|
||||
.map((power) => {
|
||||
const moduleCode = moduleCodeById.get(String(power.b_module_id));
|
||||
return moduleCode ? `${moduleCode}.${power.b_code}` : "";
|
||||
})
|
||||
.filter(Boolean);
|
||||
loadedUserId.value = userId;
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -40,11 +60,14 @@ export const usePermissionStore = defineStore("permissions", () => {
|
||||
}
|
||||
|
||||
function canModule(moduleCode) {
|
||||
return !moduleCode || moduleSet.value.has(moduleCode);
|
||||
return isG3soft.value || !moduleCode || moduleSet.value.has(moduleCode);
|
||||
}
|
||||
|
||||
function canPower(moduleCode, powerCode) {
|
||||
return canModule(moduleCode) && powerSet.value.has(`${moduleCode}.${powerCode}`);
|
||||
return (
|
||||
isG3soft.value ||
|
||||
(canModule(moduleCode) && powerSet.value.has(`${moduleCode}.${powerCode}`))
|
||||
);
|
||||
}
|
||||
|
||||
function clear() {
|
||||
@@ -53,5 +76,5 @@ export const usePermissionStore = defineStore("permissions", () => {
|
||||
powerCodes.value = [];
|
||||
}
|
||||
|
||||
return { load, canModule, canPower, clear, moduleCodes, powerCodes };
|
||||
return { load, canModule, canPower, clear, moduleCodes, powerCodes, isG3soft };
|
||||
});
|
||||
Reference in new issue
Block a user