first steps

This commit is contained in:
2026-04-07 22:53:49 +02:00
parent 5d582461e2
commit f21dfa9c8c
7 changed files with 22 additions and 38 deletions

View File

@@ -6,12 +6,6 @@ import type { User, LoginResponse, ConfirmResult } from '~/types/auth'
export const useAuthStore = defineStore('auth', {
state: () => ({
// On lie l'état directement au cookie
token: useCookie<string | null>('auth_token', {
// secure: false,
// sameSite: 'lax',
path: '/',
maxAge: 60 * 60 * 24 * 7
}), // Expire après 7 jours
user: useCookie<User | null>('auth_user', {
// secure: false,
// sameSite: 'lax',
@@ -24,18 +18,13 @@ export const useAuthStore = defineStore('auth', {
getters: {
// Le "!!" transforme la valeur en vrai BOULÉEN (true/false)
isLoggedIn: (state) => !!state.token,
isLoggedIn: (state) => !!state.user,
// plus tard on pourras ajouter un getter pour récupérer le prénom
//userName: (state) => state.user?.name || 'Invité'
},
actions: {
setTokenCookie(newToken: string | null) {
const cookie = useCookie('auth_token')
cookie.value = newToken // On force l'écriture
this.token = newToken // On met à jour le state Pinia
},
setUserCookie(newUser: User | null) {
// 1. On récupère le cookie sans typage strict ou typé en 'any' pour l'écriture
@@ -51,7 +40,7 @@ export const useAuthStore = defineStore('auth', {
this.user = newUser
},
async register(email: string, password:string, locale:string ){
async register(email: string, password:string){
const { $api } = useNuxtApp();
const listsStore = useListStore()
const config = useRuntimeConfig()
@@ -59,18 +48,16 @@ export const useAuthStore = defineStore('auth', {
this.error = null
try {
const data = await $api.user.register(email, password, locale)
const data = await $api.user.register(email, password)
// En cas de réussite, le nouveau user est connecté.
// On assigne les valeurs : useCookie met à jour le state ET le navigateur
this.setTokenCookie(data.token)
this.setUserCookie(data.user)
listsStore.saveLists(data.lists)
return true
} catch (err: any) {
// En cas d'erreur, on nettoie les cookies
this.token = null
this.user = null
this.error = err.data?.message || "Erreur de connexion"
return false
@@ -104,14 +91,12 @@ export const useAuthStore = defineStore('auth', {
})
// On assigne les valeurs : useCookie met à jour le state ET le navigateur
this.setTokenCookie(data.token)
this.setUserCookie(data.user)
listsStore.saveLists(data.lists)
return true
} catch (err: any) {
// En cas d'erreur, on nettoie les cookies
this.token = null
this.user = null
this.error = err.data?.message || "Erreur de connexion"
return false
@@ -121,11 +106,11 @@ export const useAuthStore = defineStore('auth', {
},
logout() {
this.setTokenCookie(null)
this.setUserCookie(null)
const listsStore = useListStore()
listsStore.resetLists()
return navigateTo('/')
// ajouter le logout depuis le BO (invalidation de token etc.)
},
async pwdResetResquest( email: string, locale: string) {