backend: update API key handling to use numeric creation date and improve method signatures
This commit is contained in:
parent
ebdd70c42b
commit
419aaecc57
@ -103,7 +103,7 @@ export const refreshToken = async (req: Request, res: Response) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createApiKey = async (req: Request, res: Response) => {
|
export const createApiKey = async (_req: Request, res: Response) => {
|
||||||
const logger = container.get(LoggerService);
|
const logger = container.get(LoggerService);
|
||||||
logger.verbose('Create API key request received');
|
logger.verbose('Create API key request received');
|
||||||
|
|
||||||
@ -111,26 +111,12 @@ export const createApiKey = async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const apiKey = await authService.createApiKey();
|
const apiKey = await authService.createApiKey();
|
||||||
return res.status(201).json({ apiKey });
|
return res.status(201).json(apiKey);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleError(res, error, 'creating API key');
|
handleError(res, error, 'creating API key');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const deleteApiKeys = async (req: Request, res: Response) => {
|
|
||||||
const logger = container.get(LoggerService);
|
|
||||||
logger.verbose('Delete API keys request received');
|
|
||||||
|
|
||||||
const authService = container.get(AuthService);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await authService.deleteApiKeys();
|
|
||||||
return res.status(202).send();
|
|
||||||
} catch (error) {
|
|
||||||
handleError(res, error, 'deleting API keys');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getApiKeys = async (_req: Request, res: Response) => {
|
export const getApiKeys = async (_req: Request, res: Response) => {
|
||||||
const logger = container.get(LoggerService);
|
const logger = container.get(LoggerService);
|
||||||
logger.verbose('Get API keys request received');
|
logger.verbose('Get API keys request received');
|
||||||
@ -139,8 +125,22 @@ export const getApiKeys = async (_req: Request, res: Response) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const apiKeys = await authService.getApiKeys();
|
const apiKeys = await authService.getApiKeys();
|
||||||
return res.status(200).json({ apiKeys });
|
return res.status(200).json(apiKeys);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleError(res, error, 'getting API keys');
|
handleError(res, error, 'getting API keys');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const deleteApiKeys = async (_req: Request, res: Response) => {
|
||||||
|
const logger = container.get(LoggerService);
|
||||||
|
logger.verbose('Delete API keys request received');
|
||||||
|
|
||||||
|
const authService = container.get(AuthService);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await authService.deleteApiKeys();
|
||||||
|
return res.status(204).send();
|
||||||
|
} catch (error) {
|
||||||
|
handleError(res, error, 'deleting API keys');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@ -13,7 +13,7 @@ export class PasswordHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate a secure API key using uid with a length of 32 characters
|
// Generate a secure API key using uid with a length of 32 characters
|
||||||
static generateApiKey(): { key: string; creationDate: string } {
|
static generateApiKey(): { key: string; creationDate: number } {
|
||||||
return { key: `ovmeet-${uid(32)}`, creationDate: new Date().toISOString() };
|
return { key: `ovmeet-${uid(32)}`, creationDate: new Date().getTime() };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -568,18 +568,18 @@ export class MeetStorageService<
|
|||||||
return await this.saveCacheAndStorage(userRedisKey, storageUserKey, user);
|
return await this.saveCacheAndStorage(userRedisKey, storageUserKey, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveApiKey(apiKeyData: { key: string; creationDate: string }): Promise<void> {
|
async saveApiKey(apiKeyData: { key: string; creationDate: number }): Promise<void> {
|
||||||
const redisKey = RedisKeyName.API_KEYS;
|
const redisKey = RedisKeyName.API_KEYS;
|
||||||
const storageKey = this.keyBuilder.buildApiKeysKey();
|
const storageKey = this.keyBuilder.buildApiKeysKey();
|
||||||
this.logger.debug(`Saving API key to Redis and storage: ${redisKey}`);
|
this.logger.debug(`Saving API key to Redis and storage: ${redisKey}`);
|
||||||
await this.saveCacheAndStorage(redisKey, storageKey, apiKeyData);
|
await this.saveCacheAndStorage(redisKey, storageKey, [apiKeyData]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getApiKeys(): Promise<{ key: string; creationDate: string }[]> {
|
async getApiKeys(): Promise<{ key: string; creationDate: number }[]> {
|
||||||
const redisKey = RedisKeyName.API_KEYS;
|
const redisKey = RedisKeyName.API_KEYS;
|
||||||
const storageKey = this.keyBuilder.buildApiKeysKey();
|
const storageKey = this.keyBuilder.buildApiKeysKey();
|
||||||
this.logger.debug(`Retrieving API key from Redis and storage: ${redisKey}`);
|
this.logger.debug(`Retrieving API key from Redis and storage: ${redisKey}`);
|
||||||
const apiKeys = await this.getFromCacheAndStorage<{ key: string; creationDate: string }[]>(
|
const apiKeys = await this.getFromCacheAndStorage<{ key: string; creationDate: number }[]>(
|
||||||
redisKey,
|
redisKey,
|
||||||
storageKey
|
storageKey
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user