mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 20:43:36 +00:00
refactor: encapsulate state management for spec and suggestions generation
- Made the generation status variables private and introduced getter functions for both spec and suggestions generation states. - Updated relevant route handlers to utilize the new getter functions, improving encapsulation and reducing direct access to shared state. - Enhanced code maintainability by centralizing state management logic.
This commit is contained in:
@@ -17,11 +17,37 @@ function getTerminalEnabledConfig(): boolean {
|
||||
return process.env.TERMINAL_ENABLED !== "false"; // Enabled by default
|
||||
}
|
||||
|
||||
// In-memory session tokens (would use Redis in production)
|
||||
export const validTokens: Map<string, { createdAt: Date; expiresAt: Date }> =
|
||||
// In-memory session tokens (would use Redis in production) - private
|
||||
const validTokens: Map<string, { createdAt: Date; expiresAt: Date }> =
|
||||
new Map();
|
||||
const TOKEN_EXPIRY_MS = 24 * 60 * 60 * 1000; // 24 hours
|
||||
|
||||
/**
|
||||
* Add a token to the valid tokens map
|
||||
*/
|
||||
export function addToken(
|
||||
token: string,
|
||||
data: { createdAt: Date; expiresAt: Date }
|
||||
): void {
|
||||
validTokens.set(token, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a token from the valid tokens map
|
||||
*/
|
||||
export function deleteToken(token: string): void {
|
||||
validTokens.delete(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get token data for a given token
|
||||
*/
|
||||
export function getTokenData(
|
||||
token: string
|
||||
): { createdAt: Date; expiresAt: Date } | undefined {
|
||||
return validTokens.get(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a secure random token
|
||||
*/
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
getTerminalEnabledConfigValue,
|
||||
getTerminalPasswordConfig,
|
||||
generateToken,
|
||||
validTokens,
|
||||
addToken,
|
||||
getTokenExpiryMs,
|
||||
getErrorMessage,
|
||||
} from "../common.js";
|
||||
@@ -49,7 +49,7 @@ export function createAuthHandler() {
|
||||
// Generate session token
|
||||
const token = generateToken();
|
||||
const now = new Date();
|
||||
validTokens.set(token, {
|
||||
addToken(token, {
|
||||
createdAt: now,
|
||||
expiresAt: new Date(now.getTime() + getTokenExpiryMs()),
|
||||
});
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
*/
|
||||
|
||||
import type { Request, Response } from "express";
|
||||
import { validTokens } from "../common.js";
|
||||
import { deleteToken } from "../common.js";
|
||||
|
||||
export function createLogoutHandler() {
|
||||
return (req: Request, res: Response): void => {
|
||||
const token = (req.headers["x-terminal-token"] as string) || req.body.token;
|
||||
|
||||
if (token) {
|
||||
validTokens.delete(token);
|
||||
deleteToken(token);
|
||||
}
|
||||
|
||||
res.json({
|
||||
|
||||
Reference in New Issue
Block a user