@7365admin1/layer-common 4.0.3-staging.229 → 4.0.3-staging.230
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -727,15 +727,15 @@ const props = defineProps({
|
|
|
727
727
|
},
|
|
728
728
|
canAddServiceProvider: {
|
|
729
729
|
type: Boolean,
|
|
730
|
-
default:
|
|
730
|
+
default: undefined,
|
|
731
731
|
},
|
|
732
732
|
canInviteServiceProvider: {
|
|
733
733
|
type: Boolean,
|
|
734
|
-
default:
|
|
734
|
+
default: undefined,
|
|
735
735
|
},
|
|
736
736
|
canViewServiceProviders: {
|
|
737
737
|
type: Boolean,
|
|
738
|
-
default:
|
|
738
|
+
default: undefined,
|
|
739
739
|
},
|
|
740
740
|
showAddButton: {
|
|
741
741
|
type: Boolean,
|
|
@@ -747,6 +747,25 @@ const props = defineProps({
|
|
|
747
747
|
},
|
|
748
748
|
});
|
|
749
749
|
|
|
750
|
+
// No app binds these three -- there was no permission catalogue key to bind
|
|
751
|
+
// them to, so they defaulted to `true` and every action was open to any
|
|
752
|
+
// signed-in user in every consumer. `useServiceProviderPermission` computes
|
|
753
|
+
// the real gate now; an app that DOES pass the prop still wins over it.
|
|
754
|
+
const {
|
|
755
|
+
canAddServiceProvider: derivedCanAddServiceProvider,
|
|
756
|
+
canInviteServiceProvider: derivedCanInviteServiceProvider,
|
|
757
|
+
canViewServiceProviders: derivedCanViewServiceProviders,
|
|
758
|
+
} = useServiceProviderPermission();
|
|
759
|
+
const canAddServiceProvider = computed(
|
|
760
|
+
() => props.canAddServiceProvider ?? derivedCanAddServiceProvider.value
|
|
761
|
+
);
|
|
762
|
+
const canInviteServiceProvider = computed(
|
|
763
|
+
() => props.canInviteServiceProvider ?? derivedCanInviteServiceProvider.value
|
|
764
|
+
);
|
|
765
|
+
const canViewServiceProviders = computed(
|
|
766
|
+
() => props.canViewServiceProviders ?? derivedCanViewServiceProviders.value
|
|
767
|
+
);
|
|
768
|
+
|
|
750
769
|
// Only property-management contributes a service-provider-mgmt/billing page;
|
|
751
770
|
// null in every other consumer, which hides the button instead of throwing.
|
|
752
771
|
const billingRouteName = pickRouteName(
|
|
@@ -221,6 +221,21 @@ export function useCommonPermissions() {
|
|
|
221
221
|
},
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
const serviceProviderPermissions: Record<string, TPermission> = {
|
|
225
|
+
"add-service-provider": {
|
|
226
|
+
check: true,
|
|
227
|
+
description: "Allows the user to add a new service provider.",
|
|
228
|
+
},
|
|
229
|
+
"invite-service-provider": {
|
|
230
|
+
check: true,
|
|
231
|
+
description: "Allows the user to invite a service provider to the organization.",
|
|
232
|
+
},
|
|
233
|
+
"see-all-service-providers": {
|
|
234
|
+
check: true,
|
|
235
|
+
description: "Allows the user to view the list of all service providers.",
|
|
236
|
+
},
|
|
237
|
+
}
|
|
238
|
+
|
|
224
239
|
const siteSettingsPermissions: Record<string, TPermission> = {
|
|
225
240
|
"manage-site-information": {
|
|
226
241
|
check: true,
|
|
@@ -291,6 +306,7 @@ export function useCommonPermissions() {
|
|
|
291
306
|
buildingManagementPermissions,
|
|
292
307
|
buildingUnitManagementPermissions,
|
|
293
308
|
bulletinBoardPermissions,
|
|
309
|
+
serviceProviderPermissions,
|
|
294
310
|
siteSettingsPermissions,
|
|
295
311
|
|
|
296
312
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useCommonPermissions } from "./useCommonPermission";
|
|
2
|
+
|
|
3
|
+
export function useServiceProviderPermission() {
|
|
4
|
+
const { hasPermission } = usePermission();
|
|
5
|
+
const { serviceProviderPermissions } = useCommonPermissions();
|
|
6
|
+
const permissions: TPermissions = { "service-provider": serviceProviderPermissions };
|
|
7
|
+
|
|
8
|
+
const { userAppRole } = useLocalSetup();
|
|
9
|
+
|
|
10
|
+
const canAddServiceProvider = computed(() => {
|
|
11
|
+
if (!userAppRole.value) return false;
|
|
12
|
+
if (userAppRole.value.permissions.includes("*")) return true;
|
|
13
|
+
return hasPermission(userAppRole.value, permissions, "service-provider", "add-service-provider");
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const canInviteServiceProvider = computed(() => {
|
|
17
|
+
if (!userAppRole.value) return false;
|
|
18
|
+
if (userAppRole.value.permissions.includes("*")) return true;
|
|
19
|
+
return hasPermission(userAppRole.value, permissions, "service-provider", "invite-service-provider");
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const canViewServiceProviders = computed(() => {
|
|
23
|
+
if (!userAppRole.value) return false;
|
|
24
|
+
if (userAppRole.value.permissions.includes("*")) return true;
|
|
25
|
+
return hasPermission(userAppRole.value, permissions, "service-provider", "see-all-service-providers");
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
canAddServiceProvider,
|
|
30
|
+
canInviteServiceProvider,
|
|
31
|
+
canViewServiceProviders,
|
|
32
|
+
};
|
|
33
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@7365admin1/layer-common",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "4.0.3-staging.
|
|
5
|
+
"version": "4.0.3-staging.230",
|
|
6
6
|
"author": "7365admin1",
|
|
7
7
|
"main": "./nuxt.config.ts",
|
|
8
8
|
"//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",
|