Add option to attach accessId onto integration auth middleware

This commit is contained in:
Tuan Dang
2023-06-17 10:35:42 +07:00
parent af31549309
commit 75acda0d7d
5 changed files with 18 additions and 7 deletions

View File

@@ -151,6 +151,7 @@ export const getIntegrationAuthApps = async (req: Request, res: Response) => {
const apps = await getApps({
integrationAuth: req.integrationAuth,
accessToken: req.accessToken,
accessId: req.accessId,
...teamId && { teamId }
});

View File

@@ -48,10 +48,12 @@ interface App {
const getApps = async ({
integrationAuth,
accessToken,
accessId,
teamId,
}: {
integrationAuth: IIntegrationAuth;
accessToken: string;
accessId?: string;
teamId?: string;
}) => {
let apps: App[] = [];

View File

@@ -23,7 +23,7 @@ const requireIntegrationAuthorizationAuth = ({
return async (req: Request, res: Response, next: NextFunction) => {
const { integrationAuthId } = req[location];
const { integrationAuth, accessToken } = await validateClientForIntegrationAuth({
const { integrationAuth, accessToken, accessId } = await validateClientForIntegrationAuth({
authData: req.authData,
integrationAuthId: new Types.ObjectId(integrationAuthId),
acceptedRoles,
@@ -38,6 +38,10 @@ const requireIntegrationAuthorizationAuth = ({
req.accessToken = accessToken;
}
if (accessId) {
req.accessId = accessId;
}
return next();
};
};

View File

@@ -37,6 +37,7 @@ declare global {
serviceToken: any;
serviceAccount: any;
accessToken: any;
accessId: any;
serviceTokenData: any;
apiKeyData: any;
query?: any;

View File

@@ -56,11 +56,14 @@ import { validateServiceAccountClientForWorkspace } from './serviceAccount';
if (!integrationAuth) throw IntegrationAuthNotFoundError();
let accessToken;
let accessToken, accessId;
if (attachAccessToken) {
accessToken = (await IntegrationService.getIntegrationAuthAccess({
const access = (await IntegrationService.getIntegrationAuthAccess({
integrationAuthId: integrationAuth._id
})).accessToken;
}));
accessToken = access.accessToken;
accessId = access.accessId;
}
if (authData.authMode === AUTH_MODE_JWT && authData.authPayload instanceof User) {
@@ -70,7 +73,7 @@ import { validateServiceAccountClientForWorkspace } from './serviceAccount';
acceptedRoles
});
return ({ integrationAuth, accessToken });
return ({ integrationAuth, accessToken, accessId });
}
if (authData.authMode === AUTH_MODE_SERVICE_ACCOUNT && authData.authPayload instanceof ServiceAccount) {
@@ -79,7 +82,7 @@ import { validateServiceAccountClientForWorkspace } from './serviceAccount';
workspaceId: integrationAuth.workspace._id
});
return ({ integrationAuth, accessToken });
return ({ integrationAuth, accessToken, accessId });
}
if (authData.authMode === AUTH_MODE_SERVICE_TOKEN && authData.authPayload instanceof ServiceTokenData) {
@@ -95,7 +98,7 @@ import { validateServiceAccountClientForWorkspace } from './serviceAccount';
acceptedRoles
});
return ({ integrationAuth, accessToken });
return ({ integrationAuth, accessToken, accessId });
}
throw UnauthorizedRequestError({