2020-10-14 20:27:20 +00:00
|
|
|
<template>
|
2020-10-31 20:30:02 +00:00
|
|
|
<q-btn flat dense :icon="icon" :to="{ name: link }" v-if="hasPermissions" />
|
2020-10-14 20:27:20 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
2020-10-31 20:30:02 +00:00
|
|
|
import { computed, defineComponent } from '@vue/composition-api';
|
|
|
|
import { Store } from 'vuex';
|
|
|
|
import { StateInterface } from 'src/store';
|
|
|
|
|
2020-10-14 20:27:20 +00:00
|
|
|
export default defineComponent({
|
|
|
|
name: 'ShortCutLink',
|
|
|
|
props: {
|
|
|
|
link: {
|
|
|
|
required: true,
|
|
|
|
type: String
|
|
|
|
},
|
|
|
|
icon: {
|
|
|
|
required: true,
|
|
|
|
type: String
|
2020-10-31 18:33:05 +00:00
|
|
|
},
|
|
|
|
permissions: {
|
|
|
|
default: undefined
|
2020-10-14 20:27:20 +00:00
|
|
|
}
|
2020-10-31 18:33:05 +00:00
|
|
|
},
|
2020-10-31 20:30:02 +00:00
|
|
|
setup(props, { root }) {
|
2020-10-31 18:33:05 +00:00
|
|
|
const hasPermissions = computed(() => {
|
2020-10-31 20:30:02 +00:00
|
|
|
let permissions = props.permissions;
|
2020-10-31 18:33:05 +00:00
|
|
|
if (permissions) {
|
|
|
|
return (<string[]>permissions).every(permission => {
|
2020-10-31 20:30:02 +00:00
|
|
|
return (<{ 'user/permissions': string[] }>(
|
|
|
|
(<Store<StateInterface>>root.$store).getters
|
|
|
|
))['user/permissions'].includes(permission);
|
|
|
|
});
|
2020-10-31 18:33:05 +00:00
|
|
|
}
|
2020-10-31 20:30:02 +00:00
|
|
|
return true;
|
|
|
|
});
|
|
|
|
return { hasPermissions };
|
2020-10-14 20:27:20 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
</script>
|