mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-19 11:42:52 +00:00
Add project permission cache
This commit is contained in:
@@ -35,7 +35,13 @@ type TIdentityProjectServiceFactoryDep = {
|
||||
projectDAL: Pick<TProjectDALFactory, "findById">;
|
||||
projectRoleDAL: Pick<TProjectRoleDALFactory, "find">;
|
||||
identityOrgMembershipDAL: Pick<TIdentityOrgDALFactory, "findOne">;
|
||||
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission" | "getProjectPermissionByRole">;
|
||||
permissionService: Pick<
|
||||
TPermissionServiceFactory,
|
||||
| "getProjectPermission"
|
||||
| "getProjectPermissionByRole"
|
||||
| "invalidateIdentityProjectPermissionCache"
|
||||
| "invalidateProjectPermissionCache"
|
||||
>;
|
||||
};
|
||||
|
||||
export type TIdentityProjectServiceFactory = ReturnType<typeof identityProjectServiceFactory>;
|
||||
@@ -165,6 +171,12 @@ export const identityProjectServiceFactory = ({
|
||||
const identityRoles = await identityProjectMembershipRoleDAL.insertMany(sanitizedProjectMembershipRoles, tx);
|
||||
return { ...identityProjectMembership, roles: identityRoles };
|
||||
});
|
||||
|
||||
await Promise.allSettled([
|
||||
permissionService.invalidateProjectPermissionCache(projectId),
|
||||
permissionService.invalidateIdentityProjectPermissionCache(identityId)
|
||||
]);
|
||||
|
||||
return projectIdentity;
|
||||
};
|
||||
|
||||
@@ -272,6 +284,11 @@ export const identityProjectServiceFactory = ({
|
||||
return identityProjectMembershipRoleDAL.insertMany(sanitizedProjectMembershipRoles, tx);
|
||||
});
|
||||
|
||||
await Promise.allSettled([
|
||||
permissionService.invalidateProjectPermissionCache(projectId),
|
||||
permissionService.invalidateIdentityProjectPermissionCache(identityId)
|
||||
]);
|
||||
|
||||
return updatedRoles;
|
||||
};
|
||||
|
||||
@@ -302,6 +319,12 @@ export const identityProjectServiceFactory = ({
|
||||
);
|
||||
|
||||
const [deletedIdentity] = await identityProjectDAL.delete({ identityId, projectId });
|
||||
|
||||
await Promise.allSettled([
|
||||
permissionService.invalidateProjectPermissionCache(projectId),
|
||||
permissionService.invalidateIdentityProjectPermissionCache(identityId)
|
||||
]);
|
||||
|
||||
return deletedIdentity;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user