Files
swiss-datashare/frontend/src/services/auth.service.ts

46 lines
1.2 KiB
TypeScript
Raw Normal View History

import { getCookie, setCookies } from "cookies-next";
import * as jose from "jose";
import api from "./api.service";
const signIn = async (email: string, password: string) => {
const response = await api.post("auth/signIn", { email, password });
setCookies("access_token", response.data.accessToken);
setCookies("refresh_token", response.data.refreshToken);
return response;
};
const signUp = async (email: string, password: string) => {
return await api.post("auth/signUp", { email, password });
};
const signOut = () => {
setCookies("access_token", null);
2022-10-10 22:14:23 +02:00
setCookies("refresh_token", null);
window.location.reload();
};
const refreshAccessToken = async () => {
try {
const currentAccessToken = getCookie("access_token") as string;
if (
currentAccessToken &&
(jose.decodeJwt(currentAccessToken).exp ?? 0) * 1000 <
Date.now() + 2 * 60 * 1000
) {
const refreshToken = getCookie("refresh_token");
const response = await api.post("auth/token", { refreshToken });
setCookies("access_token", response.data.accessToken);
}
} catch {
console.info("Refresh token invalid or expired");
}
};
export default {
signIn,
signUp,
signOut,
refreshAccessToken,
};