mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
chore: ajustement JWT
This commit is contained in:
@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user