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()!); }