Compare commits

...

2 Commits

Author SHA1 Message Date
gitea-actions 968f59edc5 chore: bump version to v0.4.53
Auto Tag Develop / tag (push) Successful in 9s
Build & Push Docker Image / build (push) Successful in 2m57s
2026-06-29 09:57:44 +00:00
Matthieu 7001687194 feat(rbac) : gate la Messagerie (onglet layout + page /mail) par mail.access
Auto Tag Develop / tag (push) Successful in 8s
2026-06-29 11:57:36 +02:00
3 changed files with 10 additions and 6 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
parameters:
app.version: '0.4.52'
app.version: '0.4.53'
+8 -5
View File
@@ -60,13 +60,16 @@ const { sections } = useSidebar()
const isEmployee = computed(() => Boolean(auth.user?.isEmployee))
const isMailVisible = computed(() => {
const roles: string[] = auth.user?.roles ?? []
return roles.includes('ROLE_USER') || roles.includes('ROLE_ADMIN')
})
const { can } = usePermissions()
// L'onglet Messagerie est rendu côté layout (hors sidebar backend) : il faut donc
// reproduire ici le gate de permission. ROLE_ADMIN bypasse via can().
const isMailVisible = computed(() => can('mail.access'))
const { enabled: shareEnabled, ensureLoaded: ensureShareStatus } = useShareStatus()
const isDocumentsVisible = computed(() => shareEnabled.value === true)
// Documents = explorateur de partage : visible si le module est actif ET la
// permission d'accès au partage est accordée (alignement avec le middleware de page).
const isDocumentsVisible = computed(() => shareEnabled.value === true && can('integration.share.access'))
const currentProjectId = computed(() => {
const match = route.path.match(/^\/projects\/(\d+)/)
+1
View File
@@ -6,6 +6,7 @@ const { t } = useI18n()
const router = useRouter()
const route = useRoute()
definePageMeta({ middleware: ['permission'], permission: 'mail.access' })
useHead({ title: t('mail.title') })
// ─── Store ────────────────────────────────────────────────────────────────