mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 18:47:51 +00:00
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>
37 lines
657 B
Vue
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>
|