async function refreshAccessToken(token: any) {
try {
const data = {
staffId: token.staffId,
refreshToken: token.refreshToken
}
const res = await axios.post('/api/v1/admin/staff/refresh_token', data);
const refreshedTokens = await res.data;
token.accessToken = refreshedTokens.result.accessToken
token.accessTokenExpires = Date.now() + 900 * 1000
token.refreshToken = refreshedTokens.result.refreshtoken
console.log(token)
return token
} catch (e) {
console.log("Error")
console.log(e)
return {
error: "RefreshAccessTokenError",
}
}
}
export const authOptions: any = {
providers: [
CredentialsProvider({
id: 'credentials',
name: "Credentials",
credentials: {
email: { label: "Name", type: "text" },
password: { label: "Password", type: "password" },
},
async authorize(credentials: any) {
try {
...
} catch (error: any) {
throw new Error(error);
}
}
})
],
callbacks: {
async jwt({ token, user, account, profile, isNewUser }: any) {
if (user) {
token.accessToken = user.result.accessToken
token.accessTokenExpires = Date.now() + 900 * 1000
token.refreshToken = user.result.refreshToken
token.staffId = user.staffId
}
if (Date.now() < token.accessTokenExpires) {
return token
}
return refreshAccessToken(token)
},
}
}