mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 19:16:22 +00:00
30 lines
1002 B
TypeScript
30 lines
1002 B
TypeScript
import { Request, Response, NextFunction } from 'express';
|
|
import { Types } from 'mongoose';
|
|
import { ServiceToken, ServiceTokenData } from '../models';
|
|
import { validateClientForServiceTokenData } from '../helpers/serviceTokenData';
|
|
import { validateMembership } from '../helpers/membership';
|
|
import { AccountNotFoundError, UnauthorizedRequestError } from '../utils/errors';
|
|
|
|
type req = 'params' | 'body' | 'query';
|
|
|
|
const requireServiceTokenDataAuth = ({
|
|
acceptedRoles,
|
|
location = 'params'
|
|
}: {
|
|
acceptedRoles: Array<'admin' | 'member'>;
|
|
location?: req;
|
|
}) => {
|
|
return async (req: Request, res: Response, next: NextFunction) => {
|
|
const { serviceTokenDataId } = req[location];
|
|
|
|
req.serviceTokenData = await validateClientForServiceTokenData({
|
|
authData: req.authData,
|
|
serviceTokenDataId: new Types.ObjectId(serviceTokenDataId),
|
|
acceptedRoles
|
|
});
|
|
|
|
next();
|
|
}
|
|
}
|
|
|
|
export default requireServiceTokenDataAuth; |