Files
chatwoot/app/javascript/dashboard/components/policy.vue
Shivam Mishra 161024db9d feat: Add visibility checks for installation types (#10773)
This pull request includes multiple changes to the sidebar and route
metas to configure visibility of features on the dashboard.

Here's a summary of the changes

1. Added `installationTypes`, field to routes `meta`, this works along
side `permissions` and `featureFlags`
This allows us to decide weather a particular feature is accessible on a
particular type. For instance, the Billing pages should only be
available on Cloud
2. Updated `usePolicy` and `policy.vue` to use the new
`installationTypes` config
3. Updated Sidebar related components to remove `showOnlyOnCloud` to use
the new policy updates.

Testing the PR

Here's the matrix of cases:
https://docs.google.com/spreadsheets/d/15AAJntJZoyudaby77BOnRcC4435FGuT7PXbUXoTyU50/edit?usp=sharing

---------

Co-authored-by: Pranav <pranav@chatwoot.com>
Co-authored-by: Sojan Jose <sojan@pepalo.com>
Co-authored-by: Pranav <pranavrajs@gmail.com>
2025-02-21 14:48:31 -08:00

37 lines
657 B
Vue

<script setup>
import { usePolicy } from 'dashboard/composables/usePolicy';
import { computed } from 'vue';
const props = defineProps({
as: {
type: String,
default: 'div',
},
permissions: {
type: Array,
required: true,
},
featureFlag: {
type: String,
default: null,
},
installationTypes: {
type: Array,
default: null,
},
});
const { shouldShow } = usePolicy();
const show = computed(() =>
shouldShow(props.featureFlag, props.permissions, props.installationTypes)
);
</script>
<!-- eslint-disable vue/no-root-v-if -->
<template>
<component :is="as" v-if="show">
<slot />
</component>
</template>