From 4feba517aaee00eaa3832d1142081462a1d0ce08 Mon Sep 17 00:00:00 2001 From: Aelita4 Date: Sun, 5 Nov 2023 21:23:46 +0100 Subject: [PATCH] Add admin page for showing access tokens --- src/lib/accessTokens.ts | 17 +++++++++++ src/pages/admin/accessTokens.astro | 47 ++++++++++++++++++++++++++++++ src/types/AccessToken.ts | 2 +- 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/pages/admin/accessTokens.astro diff --git a/src/lib/accessTokens.ts b/src/lib/accessTokens.ts index 5f42532..f3d236e 100644 --- a/src/lib/accessTokens.ts +++ b/src/lib/accessTokens.ts @@ -23,4 +23,21 @@ export const getAccessToken = async (accessToken: string) => { { username }, { entropy } ] }) as Promise; +} + +export const getAllAccessTokens = async () => { + const master: AccessToken = { + type: "X", + username: "0", + entropy: "b70972be3921e04a8d0c442f64c2c19a4ac01e886e8e5649916f9b88870fa6dd", + createdAt: new Date(1698851542427), + expiresAt: null, + createdFrom: null + } + + const accessTokens = await AccessTokens(); + const arrayOfTokens = await accessTokens.find({}).toArray() as AccessToken[]; + let arr = [master].concat(arrayOfTokens); + // return accessTokens.find({}).toArray() as Promise; + return arr; } \ No newline at end of file diff --git a/src/pages/admin/accessTokens.astro b/src/pages/admin/accessTokens.astro new file mode 100644 index 0000000..3872882 --- /dev/null +++ b/src/pages/admin/accessTokens.astro @@ -0,0 +1,47 @@ +--- +import Layout from "../../layouts/Layout.astro"; +import { getAllAccessTokens } from "../../lib/accessTokens"; + +const tokens = await getAllAccessTokens(); + +const type = { + "A": "Authorization", + "X": "Master Key" +} +--- + + +

Access tokens

+ + + + + + + + + + + + + + + {tokens.map(token => + + + + + + + + + )} + +
IDTypeUsernameEntropy hashCreatedExpiresCreated fromValidity
{token._id}{type[token.type] ?? `Other`}{token.username}{token.entropy}{token.createdAt.getTime()}{token.expiresAt?.getTime() ?? "null"}{token.createdFrom}{token.expiresAt !== null && Date.now() > token.expiresAt.getTime() ? Expired {Math.floor((Date.now() - token.expiresAt.getTime()) / 1000 / 60)} minutes ago : Date.now() < token.createdAt.getTime() ? TimeTravelException (check in {Math.floor((token.createdAt.getTime() - Date.now()) / 1000 / 60)} minutes) : Valid for{token.expiresAt === null ? "ever" : ` ${Math.floor((token.expiresAt.getTime() - Date.now()) / 1000 / 60)} minutes`}}
+
+ + \ No newline at end of file diff --git a/src/types/AccessToken.ts b/src/types/AccessToken.ts index 9bb8176..ee09b73 100644 --- a/src/types/AccessToken.ts +++ b/src/types/AccessToken.ts @@ -6,6 +6,6 @@ export default interface AccessToken { username: string; entropy: string; createdAt: Date; - expiresAt: Date; + expiresAt: Date | null; createdFrom: null | 'loginForm'; } \ No newline at end of file