feat: login / logout toast

This commit is contained in:
2026-01-20 10:52:03 -05:00
parent bfb5ae3a70
commit 2d0b176ab8
2 changed files with 34 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ import type { FormSubmitEvent } from "@nuxt/ui";
const isRedirecting = ref(false);
export function useAuthConnexion() {
const toast = useToast();
const { fetch: refreshUserSession } = useUserSession();
const routeRedirect = useRoute().query.redirect as string || undefined;
@@ -21,10 +22,22 @@ export function useAuthConnexion() {
if (!success) {
throw new Error(message);
}
toast.add({
title: "Connexion réussie",
color: "success",
description: message,
duration: 3000,
});
await redirectTo(redirect);
}
catch (error) {
console.log(error);
toast.add({
title: "Erreur de connexion",
color: "error",
description: error instanceof Error ? error.message : "Une erreur est survenue lors de la connexion.",
duration: 5000,
});
}
}
@@ -35,10 +48,22 @@ export function useAuthConnexion() {
if (!result.success) {
throw new Error("Échec de la déconnexion.");
}
toast.add({
title: "Déconnexion réussie",
color: "success",
description: "Vous avez été déconnecté avec succès.",
duration: 3000,
});
await redirectTo(redirect);
}
catch (error) {
console.log(error);
toast.add({
title: "Erreur de déconnexion",
color: "error",
description: error instanceof Error ? error.message : "Une erreur est survenue lors de la déconnexion.",
duration: 5000,
});
}
}

View File

@@ -1,17 +1,21 @@
export default defineEventHandler(async (event) => {
try {
const variables = await readBody<AuthLoginForm>(event);
const { data, error } = await useServerGraphQLMutation(event, "AuthLogin", variables);
const { data } = await useServerGraphQLMutation(event, "AuthLogin", variables);
if (!data?.login) {
throw new Error(error?.message || "Une erreur est survenue lors de la connexion.");
throw new Error("INVALID_LOGIN");
}
if (!await handleLogin(event, data)) {
throw new Error("Échec de la connexion.");
throw new Error("LOGIN_FAILED");
}
return { success: true, message: "Connexion réussie" };
}
catch (error) {
const message = error instanceof Error ? error.message : "Une erreur est survenue lors de la déconnexion.";
return { success: false, message };
const messages = {
INVALID_LOGIN: "Identifiants invalides. Veuillez réessayer.",
LOGIN_FAILED: "Une erreur est survenue lors de la connexion. Veuillez réessayer plus tard.",
};
const message = (error instanceof Error && error.message in messages) ? error.message : "LOGIN_FAILED";
return { success: false, message: messages[message as keyof typeof messages] };
}
});