refactor: Creation d'un provider et d'un systeme de middleware

This commit is contained in:
Luc SORIGNET
2025-02-22 13:05:01 +01:00
parent c861239d48
commit 508847940c
18 changed files with 218 additions and 69 deletions

View File

@ -1,10 +1,10 @@
import NextAuth from 'next-auth';
import CredentialsProvider from 'next-auth/providers/credentials';
import { getJWT, refreshJWT } from '@/app/actions/authAction';
import jwt_decode from 'jsonwebtoken'; // Changed import
import jwt_decode from 'jsonwebtoken';
const options = {
secret: process.env.AUTH_SECRET,
providers: [
CredentialsProvider({
name: 'Credentials',
@ -50,9 +50,9 @@ const options = {
}
},
callbacks: {
async jwt({ token, user, trigger }) {
async jwt({ token, user }) {
// Si c'est la première connexion
if (user) {
if (user && user?.token) {
return {
...token,
token: user.token,
@ -69,23 +69,24 @@ const options = {
// Token expiré, essayer de le rafraîchir
try {
const response = await refreshJWT({ refresh: token.refresh });
if (!response) {
if (response && response?.token) {
return {
...token,
token: response.token,
refresh: response.refresh,
tokenExpires: jwt_decode.decode(response.token).exp * 1000
};
}
else{
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("Refresh token failed:", error);
return token;
}
},
async session({ session, token }) {
if (token) {
if (token && token?.token) {
const {user_id, droit, email} = jwt_decode.decode(token.token);
session.user = {
...session.user,