SuperAdmin.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <!--
  2. Super Admin bar
  3. Barre d'alerte qui s'affiche lorsque l'utilisateur est un super admin en mode switch
  4. -->
  5. <template>
  6. <!-- TODO : fonctionnement à valider -->
  7. <UiSystemBar v-if="show" class="theme-danger" :on-click="onClick">
  8. <v-icon small>fas fa-exclamation-triangle</v-icon>
  9. <span>{{ $t('super_admin_switch_account') }} </span>
  10. </UiSystemBar>
  11. </template>
  12. <script setup lang="ts">
  13. import { useAccessProfileStore } from '~/stores/accessProfile'
  14. import UrlUtils from '~/services/utils/urlUtils'
  15. import type { ComputedRef } from '@vue/reactivity'
  16. import { navigateTo } from '#app'
  17. import { useAdminUrl } from '~/composables/utils/useAdminUrl'
  18. const { makeAdminUrl } = useAdminUrl()
  19. const accessProfile = useAccessProfileStore()
  20. const show: ComputedRef<boolean> = computed(
  21. () =>
  22. accessProfile.originalAccess !== null &&
  23. accessProfile.originalAccess.isSuperAdminAccess,
  24. )
  25. const url: ComputedRef<string> = computed(() => {
  26. const orgId = accessProfile.originalAccess
  27. ? accessProfile.originalAccess.organization.id
  28. : null
  29. const originalAccessId = accessProfile.originalAccess
  30. ? accessProfile.originalAccess.id
  31. : null
  32. if (show && orgId && originalAccessId) {
  33. return makeAdminUrl(
  34. UrlUtils.join('#', 'switch_user', orgId, originalAccessId, 'exit'),
  35. )
  36. }
  37. return ''
  38. })
  39. const onClick = () => {
  40. navigateTo(url.value, { external: true })
  41. }
  42. </script>
  43. <style scoped lang="scss">
  44. .v-system-bar {
  45. font-size: 14px;
  46. }
  47. .v-icon {
  48. height: 20px;
  49. margin: 0 6px;
  50. }
  51. </style>