feat: connexionButton
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
const { connexionButton } = useAuthConnexion();
|
||||||
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="bg-inverted text-inverted py-1.5">
|
<div class="bg-inverted text-inverted py-1.5">
|
||||||
<div class="container flex flex-col sm:flex-row items-center gap-3">
|
<div class="container flex flex-col sm:flex-row items-center gap-3">
|
||||||
<SiteFooterCopyright class="sm:mr-auto" />
|
<SiteFooterCopyright class="sm:mr-auto" />
|
||||||
<AuthConnexionButton color="neutral" variant="link" />
|
<UButton v-bind="connexionButton" color="neutral" variant="link" />
|
||||||
<SiteFooterCredits />
|
<SiteFooterCredits />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,8 +8,5 @@
|
|||||||
<SvgSiteLogo class="h-12 w-auto" />
|
<SvgSiteLogo class="h-12 w-auto" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</template>
|
</template>
|
||||||
<template #right>
|
|
||||||
<AuthConnexionButton />
|
|
||||||
</template>
|
|
||||||
</UHeader>
|
</UHeader>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -2,5 +2,6 @@ export function useAuth() {
|
|||||||
const { loggedIn: isLoggedIn, session } = useUserSession();
|
const { loggedIn: isLoggedIn, session } = useUserSession();
|
||||||
const hasRole = (role: string) => session.value?.user?.roles?.includes(role) || false;
|
const hasRole = (role: string) => session.value?.user?.roles?.includes(role) || false;
|
||||||
const isAdmin = computed(() => hasRole("administrator"));
|
const isAdmin = computed(() => hasRole("administrator"));
|
||||||
|
|
||||||
return { isLoggedIn, hasRole, isAdmin };
|
return { isLoggedIn, hasRole, isAdmin };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type { FormSubmitEvent } from "@nuxt/ui";
|
|||||||
const isRedirecting = ref(false);
|
const isRedirecting = ref(false);
|
||||||
|
|
||||||
export function useAuthConnexion() {
|
export function useAuthConnexion() {
|
||||||
|
const { isLoggedIn } = useAuth();
|
||||||
const toast = useToast();
|
const toast = useToast();
|
||||||
const { fetch: refreshUserSession } = useUserSession();
|
const { fetch: refreshUserSession } = useUserSession();
|
||||||
const routeRedirect = useRoute().query.redirect as string || undefined;
|
const routeRedirect = useRoute().query.redirect as string || undefined;
|
||||||
@@ -67,5 +68,12 @@ export function useAuthConnexion() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { isRedirecting, login, logout };
|
// Dynamic connexion link
|
||||||
|
const connexionButton = computed(() => ({
|
||||||
|
label: isLoggedIn.value ? "Déconnexion" : "Connexion",
|
||||||
|
icon: isLoggedIn.value ? "i-lucide-log-out" : "i-lucide-log-in",
|
||||||
|
to: "/connexion",
|
||||||
|
}));
|
||||||
|
|
||||||
|
return { isRedirecting, login, logout, connexionButton };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user