Continue work on API key

This commit is contained in:
Tuan Dang
2022-12-25 19:19:56 -05:00
parent d869968f88
commit 888d28d6b9
6 changed files with 131 additions and 39 deletions
@@ -0,0 +1,40 @@
import { Request, Response, NextFunction } from 'express';
import { APIKeyData } from '../models';
import { validateMembership } from '../helpers/membership';
import { AccountNotFoundError } from '../utils/errors';
type req = 'params' | 'body' | 'query';
const requireAPIKeyDataAuth = ({
acceptedRoles,
acceptedStatuses,
location = 'params'
}: {
acceptedRoles: string[];
acceptedStatuses: string[];
location?: req;
}) => {
return async (req: Request, res: Response, next: NextFunction) => {
// req.user
const apiKeyData = await APIKeyData.findById(req[location].apiKeyDataId);
if (!apiKeyData) {
return next(AccountNotFoundError({message: 'Failed to locate API Key data'}));
}
await validateMembership({
userId: req.user._id.toString(),
workspaceId: apiKeyData?.workspace.toString(),
acceptedRoles,
acceptedStatuses
});
req.apiKeyData = '' // ??
next();
}
}
export default requireAPIKeyDataAuth;