forked from Transparency/kgroad-frontend2
fixed sort in profile-reports table and in statistics table, improved error messages, improved metatags by fetching metadata from server
This commit is contained in:
1 parent
0221a79015
commit
0ba0f1df89
25 files changed
+413
-171
No files matched your search
@@ -19,16 +19,7 @@ const verifyToken = async (access_token: string) => {
|
||||
};
|
||||
|
||||
const refreshToken = async (token: JWT): Promise<JWT> => {
|
||||
// const date = new Date().toLocaleTimeString();
|
||||
// const expire = new Date(token.expires_in).toLocaleTimeString();
|
||||
|
||||
const verify = await verifyToken(token.access_token);
|
||||
|
||||
if (verify) {
|
||||
return {
|
||||
...token,
|
||||
};
|
||||
}
|
||||
const UTC = new Date();
|
||||
|
||||
const data = {
|
||||
refresh: token.refresh_token,
|
||||
@@ -39,10 +30,16 @@ const refreshToken = async (token: JWT): Promise<JWT> => {
|
||||
data
|
||||
);
|
||||
|
||||
const expirationTime = new Date(UTC.getTime() + 14 * 60000);
|
||||
expirationTime.setTime(
|
||||
expirationTime.getTime() +
|
||||
expirationTime.getTimezoneOffset() * 60 * 1000 * -1
|
||||
);
|
||||
|
||||
return {
|
||||
...token,
|
||||
access_token: response.data.access,
|
||||
expires_in: response.data.expires_at,
|
||||
expires_in: expirationTime,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -58,20 +55,37 @@ export const authConfig: AuthOptions = {
|
||||
},
|
||||
password: { label: "Password", type: "password" },
|
||||
},
|
||||
async authorize(credentials, req) {
|
||||
async authorize(credentials, req): Promise<any> {
|
||||
if (!credentials?.email || !credentials?.password)
|
||||
return null;
|
||||
|
||||
const { email, password } = credentials as any;
|
||||
const { email, password } = credentials;
|
||||
const data = {
|
||||
email,
|
||||
password,
|
||||
};
|
||||
|
||||
const res = await apiInstance.post("/users/login/", data);
|
||||
const res = await apiInstance.post<ITokens>(
|
||||
"/users/login/",
|
||||
data
|
||||
);
|
||||
|
||||
if ([200, 201].includes(res.status)) {
|
||||
const user = res.data;
|
||||
const currentTime = new Date();
|
||||
const expirationTime = new Date(
|
||||
currentTime.getTime() + 14 * 60000
|
||||
);
|
||||
expirationTime.setTime(
|
||||
expirationTime.getTime() +
|
||||
expirationTime.getTimezoneOffset() * 60 * 1000 * -1
|
||||
);
|
||||
|
||||
const user = {
|
||||
refresh_token: res.data.refresh_token,
|
||||
access_token: res.data.access_token,
|
||||
expires_in: expirationTime,
|
||||
};
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -105,9 +119,15 @@ export const authConfig: AuthOptions = {
|
||||
return false;
|
||||
}
|
||||
|
||||
const currentTime = new Date();
|
||||
|
||||
const expirationTime = new Date(
|
||||
currentTime.getTime() + 15 * 60000
|
||||
);
|
||||
|
||||
user.access_token = res.data.access_token;
|
||||
user.refresh_token = res.data.refresh_token;
|
||||
user.expires_in = res.data.expires_in;
|
||||
user.expires_in = expirationTime;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -115,12 +135,26 @@ export const authConfig: AuthOptions = {
|
||||
async jwt({ token, user }) {
|
||||
if (user) return { ...token, ...user };
|
||||
|
||||
return refreshToken(token);
|
||||
const UTC = new Date();
|
||||
const currentTime = new Date(UTC.getTime());
|
||||
currentTime.setTime(
|
||||
currentTime.getTime() +
|
||||
currentTime.getTimezoneOffset() * 60 * 1000 * -1
|
||||
);
|
||||
|
||||
const isValid =
|
||||
new Date(currentTime).getTime() <=
|
||||
new Date(token.expires_in).getTime();
|
||||
|
||||
if (isValid) return token;
|
||||
|
||||
return await refreshToken(token);
|
||||
},
|
||||
|
||||
async session({ token, session }) {
|
||||
session.access_token = token.access_token;
|
||||
session.refresh_token = token.refresh_token;
|
||||
session.expires_in = token.expires_in;
|
||||
|
||||
return session;
|
||||
},
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
export interface IMetatag {
|
||||
id: number;
|
||||
title: string;
|
||||
description: string;
|
||||
keywords: string;
|
||||
og_image?: string;
|
||||
page: string;
|
||||
}
|
||||
Reference in new issue
Block a user