mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +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>
 |