generated from pascalmartineau/wp-skeleton
refactor: useAuth / useAuthActions
All checks were successful
Deploy WordPress and Nuxt / deploy (push) Successful in 1m4s
All checks were successful
Deploy WordPress and Nuxt / deploy (push) Successful in 1m4s
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const { isLoggedIn, loginFields, login } = useAuth();
|
const { isLoggedIn } = useAuth();
|
||||||
|
const { loginFields, login } = useAuthActions();
|
||||||
if (isLoggedIn.value) {
|
if (isLoggedIn.value) {
|
||||||
throw createError({ statusCode: 500, statusMessage: "Erreur serveur", message: "Le formulaire de connexion ne peut pas être affiché pour un utilisateur déjà connecté." });
|
throw createError({ statusCode: 500, statusMessage: "Erreur serveur", message: "Le formulaire de connexion ne peut pas être affiché pour un utilisateur déjà connecté." });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const { isLoggedIn, logout } = useAuth();
|
const { isLoggedIn } = useAuth();
|
||||||
|
const { logout } = useAuthActions();
|
||||||
if (!isLoggedIn.value) {
|
if (!isLoggedIn.value) {
|
||||||
throw createError({ statusCode: 500, statusMessage: "Erreur serveur", message: "Le formulaire de déconnexion ne peut pas être affiché pour un utilisateur déjà déconnecté." });
|
throw createError({ statusCode: 500, statusMessage: "Erreur serveur", message: "Le formulaire de déconnexion ne peut pas être affiché pour un utilisateur déjà déconnecté." });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,21 @@ import type { FormSubmitEvent } from "@nuxt/ui";
|
|||||||
|
|
||||||
export function useAuth() {
|
export function useAuth() {
|
||||||
const { loggedIn, session } = useUserSession();
|
const { loggedIn, session } = useUserSession();
|
||||||
const toast = useToast();
|
|
||||||
const redirect = useRoute().query.redirect as string || "/";
|
|
||||||
const router = useRouter();
|
|
||||||
const { fetch: refreshUserSession } = useUserSession();
|
|
||||||
|
|
||||||
const isLoggedIn = loggedIn;
|
const isLoggedIn = loggedIn;
|
||||||
const isSwitchedTo = computed(() => Boolean(session.value?.isSwitchedTo));
|
const isSwitchedTo = computed(() => Boolean(session.value?.isSwitchedTo));
|
||||||
|
|
||||||
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, isSwitchedTo, hasRole, isAdmin };
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useAuthActions() {
|
||||||
|
const { fetch: refreshUserSession } = useUserSession();
|
||||||
|
const redirect = useRoute().query.redirect as string || "/";
|
||||||
|
const router = useRouter();
|
||||||
|
const toast = useToast();
|
||||||
|
|
||||||
// Login
|
// Login
|
||||||
const loginFields = [
|
const loginFields = [
|
||||||
{
|
{
|
||||||
@@ -91,5 +95,5 @@ export function useAuth() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { isLoggedIn, isSwitchedTo, hasRole, isAdmin, loginFields, login, logout, switchTo, switchBack };
|
return { loginFields, login, logout, switchTo, switchBack };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
export default defineNuxtRouteMiddleware((to) => {
|
export default defineNuxtRouteMiddleware((to) => {
|
||||||
const { loggedIn, session } = useUserSession();
|
const { isLoggedIn, hasRole } = useAuth();
|
||||||
const hasRole = (role: string) => session.value?.user?.roles?.includes(role) || false;
|
if (!isLoggedIn.value) {
|
||||||
if (!loggedIn.value) {
|
|
||||||
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
||||||
}
|
}
|
||||||
if (!to.meta.role) {
|
if (!to.meta.role) {
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
export default defineNuxtRouteMiddleware((to) => {
|
export default defineNuxtRouteMiddleware((to) => {
|
||||||
const { loggedIn, session } = useUserSession();
|
const { isLoggedIn, isAdmin } = useAuth();
|
||||||
if (!loggedIn.value) {
|
if (!isLoggedIn.value) {
|
||||||
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
||||||
}
|
}
|
||||||
const isAdmin = session.value?.user?.roles?.includes("administrator") || false;
|
if (!isAdmin.value) {
|
||||||
if (!isAdmin) {
|
|
||||||
throw createError({
|
throw createError({
|
||||||
statusCode: 403,
|
statusCode: 403,
|
||||||
statusMessage: "Accès refusé - Privilèges administrateur requis",
|
statusMessage: "Accès refusé - Privilèges administrateur requis",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export default defineNuxtRouteMiddleware((to) => {
|
export default defineNuxtRouteMiddleware((to) => {
|
||||||
const { loggedIn } = useUserSession();
|
const { isLoggedIn } = useAuth();
|
||||||
if (!loggedIn.value) {
|
if (!isLoggedIn.value) {
|
||||||
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export default defineNuxtRouteMiddleware((to) => {
|
export default defineNuxtRouteMiddleware((to) => {
|
||||||
const { loggedIn } = useUserSession();
|
const { isLoggedIn } = useAuth();
|
||||||
if (loggedIn.value) {
|
if (isLoggedIn.value) {
|
||||||
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
return navigateTo(`/connexion?redirect=${encodeURIComponent(to.fullPath)}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user