This commit is contained in:
owenchen committed 2026-08-25 15:31:16 +08:00
1 parent 1404640f16
commit 2bbf016cbf
167 files changed
+18941 -589

No files matched your search

+89
View File
@@ -0,0 +1,89 @@
import { SecurityUserPermissionInfo } from "@/data/auto/securityUserPermissionInfo";
import { LoginProfile } from "@/data/auto/loginProfile";
import { useLoginProfileStore } from "@/store/modules/loginProfile";
import { YesNoPolicy } from "@/data/custom/yesNoPolicy";
export class PermissionContext {
private userPermissons!: SecurityUserPermissionInfo;
constructor(userPermissons: SecurityUserPermissionInfo) {
this.userPermissons = userPermissons ?? new SecurityUserPermissionInfo();
}
canView(permission: string, dataSensitiveId?: string): boolean {
if (dataSensitiveId) {
return (
this.userPermissons.PermissionDependents?.some(
(x) =>
x.PermissionName === permission &&
x.DependentDetailName === dataSensitiveId
) === true
);
}
return (
this.userPermissons.Permissions?.some(
(x) => x.PermissionName === permission
) === true
);
}
canCreate(permission: string, dataSensitiveId?: string): boolean {
if (dataSensitiveId) {
return (
this.userPermissons.PermissionDependents?.some(
(x) =>
x.PermissionName === permission &&
x.DependentDetailName === dataSensitiveId &&
x.CreateIndc == YesNoPolicy.YES
) === true
);
}
return (
this.userPermissons.Permissions?.some(
(x) =>
x.PermissionName === permission && x.CreateIndc == YesNoPolicy.YES
) === true
);
}
canAmend(permission: string, dataSensitiveId?: string): boolean {
if (dataSensitiveId) {
return (
this.userPermissons.PermissionDependents?.some(
(x) =>
x.PermissionName === permission &&
x.DependentDetailName === dataSensitiveId &&
x.AmendIndc == YesNoPolicy.YES
) === true
);
}
return (
this.userPermissons.Permissions?.some(
(x) => x.PermissionName === permission && x.AmendIndc == YesNoPolicy.YES
) === true
);
}
canDelete(permission: string, dataSensitiveId?: string): boolean {
if (dataSensitiveId) {
return (
this.userPermissons.PermissionDependents?.some(
(x) =>
x.PermissionName === permission &&
x.DependentDetailName === dataSensitiveId &&
x.DeleteIndc == YesNoPolicy.YES
) === true
);
}
return (
this.userPermissons.Permissions?.some(
(x) =>
x.PermissionName === permission && x.DeleteIndc == YesNoPolicy.YES
) === true
);
}
}
export function usePermissionContext(): PermissionContext {
const userLoginProfile = useLoginProfileStore();
return new PermissionContext(userLoginProfile.getPermissionInfo()!);
}