se agrego tea token. reemplaso del access token expirado. Para evitar refresh en cada consulta
This commit is contained in:
@@ -21,31 +21,37 @@ export const getValidAccessToken = cache(async () => {
|
|||||||
if (isValid) return session.access_token;
|
if (isValid) return session.access_token;
|
||||||
// console.log('Access Token Expiró');
|
// console.log('Access Token Expiró');
|
||||||
|
|
||||||
|
|
||||||
// B. Si expiró, buscamos la cookie
|
// B. Si expiró, buscamos la cookie
|
||||||
const cookieStore = cookies();
|
const cookieStore = cookies();
|
||||||
const refreshTokenCookie = await cookieStore
|
const cookie = await cookieStore
|
||||||
const refreshToken = refreshTokenCookie.get('refresh_token')?.value;
|
const refreshToken = cookie.get('refresh_token')?.value;
|
||||||
|
const teaToken = cookie.get('tea_token')?.value;
|
||||||
|
|
||||||
if (!refreshToken) {
|
if (!refreshToken) {
|
||||||
// console.log('No hay Refresh Token');
|
// console.log('No hay Refresh Token');
|
||||||
|
// Si no hay refres pero si access token pero ya expiro borrar la cookie para forzar cierre de session
|
||||||
|
(await cookieStore).delete('authjs.session-token');// comentar si por algun motivo da error
|
||||||
return null
|
return null
|
||||||
} // No hay refresh token, fin del juego
|
} // No hay refresh token, fin del juego
|
||||||
// console.log('Si hay Refresh Token');
|
// console.log('Si hay Refresh Token');
|
||||||
|
|
||||||
|
if (teaToken) {
|
||||||
|
return teaToken
|
||||||
|
}
|
||||||
|
|
||||||
// C. Intentamos refrescar
|
// C. Intentamos refrescar
|
||||||
const newTokens = await resfreshTokenAction({ refreshToken });
|
const newTokens = await resfreshTokenAction({ refreshToken });
|
||||||
|
|
||||||
if (!newTokens) {
|
if (!newTokens) {
|
||||||
// console.log('No hay token nuevo');
|
// console.log('No hay token nuevo');
|
||||||
// Si falla el refresh (token revocado o expirado), borramos cookie
|
// Si falla el refresh (token revocado o expirado), borramos cookies
|
||||||
(await cookieStore).delete('refresh_token');
|
(await cookieStore).delete('refresh_token');
|
||||||
(await cookieStore).delete('authjs.session-token');
|
(await cookieStore).delete('authjs.session-token');// comentar si por algun motivo da error
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// console.log('Si hay token nuevo');
|
// console.log('Si hay token nuevo');
|
||||||
|
|
||||||
|
// console.log('Guardamos refresh');
|
||||||
// D. Guardamos el nuevo refresh token en cookie y retornamos el access token
|
// D. Guardamos el nuevo refresh token en cookie y retornamos el access token
|
||||||
(await cookieStore).set('refresh_token', newTokens.refresh_token, {
|
(await cookieStore).set('refresh_token', newTokens.refresh_token, {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
@@ -55,13 +61,14 @@ export const getValidAccessToken = cache(async () => {
|
|||||||
maxAge: 7 * 24 * 60 * 60,
|
maxAge: 7 * 24 * 60 * 60,
|
||||||
});
|
});
|
||||||
|
|
||||||
// (await cookieStore).set('authjs.session-token', newTokens.access_token, {
|
// console.log('guardamo tea');
|
||||||
// httpOnly: true,
|
(await cookieStore).set('tea_token', newTokens.access_token, {
|
||||||
// secure: process.env.NODE_ENV === 'production',
|
httpOnly: true,
|
||||||
// sameSite: 'lax',
|
secure: process.env.NODE_ENV === 'production',
|
||||||
// path: '/',
|
sameSite: 'lax',
|
||||||
// maxAge: 7 * 24 * 60 * 60,
|
path: '/',
|
||||||
// });
|
maxAge: 7 * 24 * 60 * 60,
|
||||||
|
});
|
||||||
|
|
||||||
return newTokens.access_token;
|
return newTokens.access_token;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user