mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 20:25:43 +00:00
Begin service token data refactor
This commit is contained in:
@@ -6,6 +6,7 @@ import requireOrganizationAuth from './requireOrganizationAuth';
|
||||
import requireIntegrationAuth from './requireIntegrationAuth';
|
||||
import requireIntegrationAuthorizationAuth from './requireIntegrationAuthorizationAuth';
|
||||
import requireServiceTokenAuth from './requireServiceTokenAuth';
|
||||
import requireServiceTokenDataAuth from './requireServiceTokenDataAuth';
|
||||
import validateRequest from './validateRequest';
|
||||
|
||||
export {
|
||||
@@ -17,5 +18,6 @@ export {
|
||||
requireIntegrationAuth,
|
||||
requireIntegrationAuthorizationAuth,
|
||||
requireServiceTokenAuth,
|
||||
requireServiceTokenDataAuth,
|
||||
validateRequest
|
||||
};
|
||||
|
||||
@@ -4,6 +4,7 @@ import { ServiceToken } from '../models';
|
||||
import { JWT_SERVICE_SECRET } from '../config';
|
||||
import { BadRequestError, UnauthorizedRequestError } from '../utils/errors';
|
||||
|
||||
// TODO: deprecate
|
||||
declare module 'jsonwebtoken' {
|
||||
export interface UserIDJwtPayload extends jwt.JwtPayload {
|
||||
userId: string;
|
||||
|
||||
+10
-10
@@ -1,11 +1,11 @@
|
||||
import { Request, Response, NextFunction } from 'express';
|
||||
import { APIKeyData } from '../models';
|
||||
import { ServiceToken, ServiceTokenData } from '../models';
|
||||
import { validateMembership } from '../helpers/membership';
|
||||
import { AccountNotFoundError } from '../utils/errors';
|
||||
|
||||
type req = 'params' | 'body' | 'query';
|
||||
|
||||
const requireAPIKeyDataAuth = ({
|
||||
const requireServiceTokenDataAuth = ({
|
||||
acceptedRoles,
|
||||
acceptedStatuses,
|
||||
location = 'params'
|
||||
@@ -16,25 +16,25 @@ const requireAPIKeyDataAuth = ({
|
||||
}) => {
|
||||
return async (req: Request, res: Response, next: NextFunction) => {
|
||||
|
||||
// req.user
|
||||
const serviceTokenData = await ServiceTokenData
|
||||
.findById(req[location].serviceTokenDataId)
|
||||
.select('+encryptedKey +iv +tag');
|
||||
|
||||
const apiKeyData = await APIKeyData.findById(req[location].apiKeyDataId);
|
||||
|
||||
if (!apiKeyData) {
|
||||
return next(AccountNotFoundError({message: 'Failed to locate API Key data'}));
|
||||
if (!serviceTokenData) {
|
||||
return next(AccountNotFoundError({message: 'Failed to locate service token data'}));
|
||||
}
|
||||
|
||||
await validateMembership({
|
||||
userId: req.user._id.toString(),
|
||||
workspaceId: apiKeyData?.workspace.toString(),
|
||||
workspaceId: serviceTokenData.workspace.toString(),
|
||||
acceptedRoles,
|
||||
acceptedStatuses
|
||||
});
|
||||
|
||||
req.apiKeyData = '' // ??
|
||||
req.serviceTokenData = serviceTokenData;
|
||||
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
export default requireAPIKeyDataAuth;
|
||||
export default requireServiceTokenDataAuth;
|
||||
Reference in New Issue
Block a user