chore: ajustement JWT

This commit is contained in:
Luc SORIGNET
2025-02-22 10:52:50 +01:00
parent eb89a324ab
commit c861239d48
12 changed files with 244 additions and 75 deletions

View File

@ -34,45 +34,69 @@ const options = {
})
],
session: {
strategy:"jwt",
strategy: "jwt",
maxAge: 30 * 24 * 60 * 60, // 30 jours
updateAge: 24 * 60 * 60, // 24 heures
},
cookies: {
sessionToken: {
name: 'n3wtschool_session_token',
options: {
httpOnly: true,
sameSite: 'lax',
path: '/',
secure: process.env.NODE_ENV === 'production'
}
}
},
callbacks: {
async jwt({ token, user }) {
if (user) {
token.token = user.token;
token.refresh = user.refresh;
token.tokenExpires = jwt_decode.decode(user.token).exp * 1000;
async jwt({ token, user, trigger }) {
// Si c'est la première connexion
if (user) {
return {
...token,
token: user.token,
refresh: user.refresh,
tokenExpires: jwt_decode.decode(user.token).exp * 1000
};
}
// Vérifie si l'access token a expiré
// Vérifier si le token n'est pas expiré
if (Date.now() < token.tokenExpires) {
return token;
}
// Renouvelle le token expiré
// Token expiré, essayer de le rafraîchir
try {
const data = {refresh: token.refresh}
const res = await refreshJWT(data);
console.log(res);
token.token = res.token;
token.refresh = res.refresh;
token.tokenExpires = jwt_decode.decode(res.token).exp * 1000;
console.log("Token refreshed", token);
return token;
const response = await refreshJWT({ refresh: token.refresh });
if (!response) {
throw new Error('Failed to refresh token');
}
return {
...token,
token: response.token,
refresh: response.refresh,
tokenExpires: jwt_decode.decode(response.token).exp * 1000
};
} catch (error) {
console.error("Erreur lors du rafraîchissement du token", error);
console.error("Refresh token failed:", error);
return token;
}
},
async session({ session, token }) {
console.log("Session callback called", token);
if (!token) {
throw new Error('Token not found');
}
else{
const decodedToken = jwt_decode.decode(token.token);
const {user_id,email,droit} = decodedToken;
session.user = {id:user_id,email,droit};
return session;
if (token) {
const {user_id, droit, email} = jwt_decode.decode(token.token);
session.user = {
...session.user,
token: token.token,
refresh: token.refresh
};
session.user.user_id = user_id;
session.user.droit = droit;
session.user.email = email;
}
return session;
}
},
pages: {