90 lines
2.7 KiB
TypeScript
90 lines
2.7 KiB
TypeScript
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()!);
|
|
}
|