Compare commits

..

2 Commits

Author SHA1 Message Date
gitea-actions f8322f8b1e chore: bump version to v0.4.10
Auto Tag Develop / tag (push) Successful in 6s
Build & Push Docker Image / build (push) Successful in 45s
2026-05-26 08:49:58 +00:00
Matthieu cd474d5089 feat(absences) : réserve « Mes absences » aux employés
Auto Tag Develop / tag (push) Successful in 6s
Un utilisateur non coché « Employé » (isEmployee = false) ne voit plus
l'entrée « Mes absences » dans le menu et ne peut plus accéder à la page
/absences (nouveau middleware employee qui redirige vers l'accueil).
L'entête de section « Absences » est masquée si l'utilisateur n'est ni
employé ni admin.
2026-05-26 10:49:52 +02:00
4 changed files with 21 additions and 5 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
parameters:
app.version: '0.4.9'
app.version: '0.4.10'
+9 -4
View File
@@ -119,11 +119,14 @@
</div>
<!-- Section : Absences -->
<p v-if="!sidebarIsCollapsed" class="px-4 pt-5 pb-1 text-xs font-semibold uppercase tracking-wider text-neutral-400">
Absences
</p>
<div v-else class="mx-2 my-3 border-t border-secondary-500" />
<template v-if="isAbsenceSectionVisible">
<p v-if="!sidebarIsCollapsed" class="px-4 pt-5 pb-1 text-xs font-semibold uppercase tracking-wider text-neutral-400">
Absences
</p>
<div v-else class="mx-2 my-3 border-t border-secondary-500" />
</template>
<SidebarLink
v-if="isEmployee"
to="/absences"
icon="mdi:umbrella-beach-outline"
label="Mes absences"
@@ -211,6 +214,8 @@ const {version} = useAppVersion()
const route = useRoute()
const isAdmin = computed(() => (auth.user?.roles ?? []).includes('ROLE_ADMIN'))
const isEmployee = computed(() => Boolean(auth.user?.isEmployee))
const isAbsenceSectionVisible = computed(() => isEmployee.value || isAdmin.value)
const isMailVisible = computed(() => {
const roles: string[] = auth.user?.roles ?? []
+9
View File
@@ -0,0 +1,9 @@
export default defineNuxtRouteMiddleware(() => {
const auth = useAuthStore()
// "Mes absences" is reserved for users flagged as employees (subject to the
// absence management). Non-employees are redirected to the home page.
if (!auth.isAuthenticated || !auth.user?.isEmployee) {
return navigateTo('/')
}
})
+2
View File
@@ -75,6 +75,8 @@ import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
type Row = AbsenceRequest & { typeLabelText: string; periodText: string; daysText: string; createdAtText: string }
definePageMeta({ middleware: ['employee'] })
const { t } = useI18n()
const service = useAbsenceService()
const { statusLabel, statusVariant, statusIcon, formatRange, formatDays, formatDate } = useAbsenceHelpers()