role-authority.vue 497 B

1234567891011121314151617181920212223242526272829
  1. <!--
  2. Access control component for fine-grained access control.
  3. -->
  4. <script lang="ts" setup>
  5. import { useAccess } from './use-access';
  6. interface Props {
  7. /**
  8. * Specified role is visible
  9. * @default []
  10. */
  11. roles?: string[];
  12. }
  13. defineOptions({
  14. name: 'RoleAuthority',
  15. });
  16. withDefaults(defineProps<Props>(), {
  17. roles: undefined,
  18. });
  19. const { hasAuthByRole } = useAccess();
  20. </script>
  21. <template>
  22. <slot v-if="!roles"></slot>
  23. <slot v-else-if="hasAuthByRole(roles)"></slot>
  24. </template>