feat: replace moment with moment-timezone for improved time handling; set default timezone to America/New_York
This commit is contained in:
parent
4606be56a0
commit
52274f204c
@ -21,7 +21,7 @@
|
|||||||
"axios-hooks": "^5.1.0",
|
"axios-hooks": "^5.1.0",
|
||||||
"framer-motion": "^11.15.0",
|
"framer-motion": "^11.15.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"moment": "^2.30.1",
|
"moment-timezone": "^0.5.46",
|
||||||
"next": "15.0.3",
|
"next": "15.0.3",
|
||||||
"next-auth": "^4.24.10",
|
"next-auth": "^4.24.10",
|
||||||
"next-themes": "^0.4.4",
|
"next-themes": "^0.4.4",
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import axios from "axios";
|
import axios, { AxiosResponse } from "axios";
|
||||||
import moment from "moment";
|
import moment from "moment-timezone";
|
||||||
import { AuthOptions, Session } from "next-auth";
|
import { AuthOptions, Session } from "next-auth";
|
||||||
import { JWT } from "next-auth/jwt";
|
import { JWT } from "next-auth/jwt";
|
||||||
import jsonwebtoken from "jsonwebtoken";
|
import jsonwebtoken from "jsonwebtoken";
|
||||||
import { JWTDecoded } from "./app/types/next-auth";
|
import { JWTDecoded } from "./app/types/next-auth";
|
||||||
|
|
||||||
moment.locale("fr");
|
moment.tz.setDefault("America/New_York");
|
||||||
|
|
||||||
export const authOptions: AuthOptions = {
|
export const authOptions: AuthOptions = {
|
||||||
providers: [
|
providers: [
|
||||||
@ -41,6 +41,7 @@ export const authOptions: AuthOptions = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
debug: process.env.NODE_ENV === "development",
|
||||||
callbacks: {
|
callbacks: {
|
||||||
async jwt({ token, account, user: profile }) {
|
async jwt({ token, account, user: profile }) {
|
||||||
// Initial sign in
|
// Initial sign in
|
||||||
@ -67,10 +68,6 @@ export const authOptions: AuthOptions = {
|
|||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return previous token if the access token has not expired yet
|
|
||||||
if (moment().isBefore(moment(token.accessTokenExpires)))
|
|
||||||
return token;
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
token.refreshTokenExpires &&
|
token.refreshTokenExpires &&
|
||||||
moment().isAfter(token.refreshTokenExpires)
|
moment().isAfter(token.refreshTokenExpires)
|
||||||
@ -80,6 +77,10 @@ export const authOptions: AuthOptions = {
|
|||||||
error: "Refresh token has expired",
|
error: "Refresh token has expired",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Return previous token if the access token has not expired yet
|
||||||
|
if (moment().isBefore(moment(token.accessTokenExpires)))
|
||||||
|
return token;
|
||||||
|
|
||||||
// Access token has expired, try to refresh it
|
// Access token has expired, try to refresh it
|
||||||
return refreshAccessToken(token);
|
return refreshAccessToken(token);
|
||||||
},
|
},
|
||||||
@ -140,7 +141,11 @@ const refreshAccessToken = async (token: JWT): Promise<JWT> => {
|
|||||||
.subtract(5, "s"),
|
.subtract(5, "s"),
|
||||||
refreshToken: response.data.refresh_token,
|
refreshToken: response.data.refresh_token,
|
||||||
};
|
};
|
||||||
} catch {
|
} catch (e) {
|
||||||
|
console.error(
|
||||||
|
"Error refreshing access token",
|
||||||
|
(e as AxiosResponse).data,
|
||||||
|
);
|
||||||
return {
|
return {
|
||||||
...token,
|
...token,
|
||||||
error: "RefreshAccessTokenError",
|
error: "RefreshAccessTokenError",
|
||||||
|
@ -4113,7 +4113,14 @@ minimist@^1.2.0, minimist@^1.2.6:
|
|||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||||
|
|
||||||
moment@^2.30.1:
|
moment-timezone@^0.5.46:
|
||||||
|
version "0.5.46"
|
||||||
|
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.46.tgz#a21aa6392b3c6b3ed916cd5e95858a28d893704a"
|
||||||
|
integrity sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==
|
||||||
|
dependencies:
|
||||||
|
moment "^2.29.4"
|
||||||
|
|
||||||
|
moment@^2.29.4:
|
||||||
version "2.30.1"
|
version "2.30.1"
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
|
||||||
integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==
|
integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==
|
||||||
|
Loading…
Reference in New Issue
Block a user