diff --git a/wp-content/themes/headless/app/middleware/hasRole.ts b/wp-content/themes/headless/app/middleware/hasRole.ts new file mode 100644 index 0000000..29a152b --- /dev/null +++ b/wp-content/themes/headless/app/middleware/hasRole.ts @@ -0,0 +1,18 @@ +export default defineNuxtRouteMiddleware((to) => { + const { hasRole, isLoggedIn } = useAuth(); + if (!isLoggedIn.value) { + return navigateTo({ path: "/connexion", query: { redirect: to.fullPath } }); + } + if (!hasRole(to.meta.hasRole || "")) { + return abortNavigation({ + statusCode: 403, + message: "Vous n'avez pas les permissions requises pour accéder à cette page.", + }); + } +}); + +declare module "#app" { + interface PageMeta { + hasRole?: string; + } +} diff --git a/wp-content/themes/headless/app/middleware/isAdmin.ts b/wp-content/themes/headless/app/middleware/isAdmin.ts new file mode 100644 index 0000000..75c9912 --- /dev/null +++ b/wp-content/themes/headless/app/middleware/isAdmin.ts @@ -0,0 +1,12 @@ +export default defineNuxtRouteMiddleware((to) => { + const { isAdmin, isLoggedIn } = useAuth(); + if (!isLoggedIn.value) { + return navigateTo({ path: "/connexion", query: { redirect: to.fullPath } }); + } + if (!isAdmin.value) { + return abortNavigation({ + statusCode: 403, + message: "Vous n'avez pas les permissions requises pour accéder à cette page.", + }); + } +}); diff --git a/wp-content/themes/headless/app/middleware/isLoggedIn.ts b/wp-content/themes/headless/app/middleware/isLoggedIn.ts new file mode 100644 index 0000000..2b7c1de --- /dev/null +++ b/wp-content/themes/headless/app/middleware/isLoggedIn.ts @@ -0,0 +1,6 @@ +export default defineNuxtRouteMiddleware((to) => { + const { isLoggedIn } = useAuth(); + if (!isLoggedIn.value) { + return navigateTo({ path: "/connexion", query: { redirect: to.fullPath } }); + } +}); diff --git a/wp-content/themes/headless/app/middleware/isLoggedOut.ts b/wp-content/themes/headless/app/middleware/isLoggedOut.ts new file mode 100644 index 0000000..f68e4d5 --- /dev/null +++ b/wp-content/themes/headless/app/middleware/isLoggedOut.ts @@ -0,0 +1,6 @@ +export default defineNuxtRouteMiddleware((to) => { + const { isLoggedIn } = useAuth(); + if (isLoggedIn.value) { + return navigateTo({ path: "/connexion", query: { redirect: to.fullPath } }); + } +});