another stage of client authentication

This commit is contained in:
DecDuck
2024-10-08 16:13:46 +11:00
parent 909432a6ce
commit 7523e536b5
10 changed files with 345 additions and 82 deletions
+28 -1
View File
@@ -7,7 +7,12 @@ export interface ClientMetadata {
export class ClientHandler {
private temporaryClientTable: {
[key: string]: { timeout: NodeJS.Timeout; data: ClientMetadata };
[key: string]: {
timeout: NodeJS.Timeout;
data: ClientMetadata;
userId?: string;
authToken?: string;
};
} = {};
async initiate(metadata: ClientMetadata) {
@@ -23,6 +28,28 @@ export class ClientHandler {
return clientId;
}
async fetchInitiateClientMetadata(clientId: string) {
const entry = this.temporaryClientTable[clientId];
if (!entry) return undefined;
return entry.data;
}
async attachUserId(clientId: string, userId: string) {
if (!this.temporaryClientTable[clientId])
throw new Error("Invalid clientId for attaching userId");
this.temporaryClientTable[clientId].userId = userId;
}
async generateAuthToken(clientId: string) {
const entry = this.temporaryClientTable[clientId];
if (!entry) throw new Error("Invalid clientId to generate token");
const token = uuidv4();
this.temporaryClientTable[clientId].authToken = token;
return token;
}
}
export const clientHandler = new ClientHandler();