Compare commits

...

1 Commits

Author SHA1 Message Date
Meet
51638b7c71 fix: check user group membership correctly 2024-09-25 18:02:32 +05:30
5 changed files with 25 additions and 12 deletions

View File

@@ -94,9 +94,12 @@ export const accessApprovalPolicyServiceFactory = ({
>[] = []; >[] = [];
for (const groupId of groupApprovers) { for (const groupId of groupApprovers) {
usersPromises.push(groupDAL.findAllGroupMembers({ orgId: actorOrgId, groupId, offset: 0 })); usersPromises.push(groupDAL.findAllGroupPossibleMembers({ orgId: actorOrgId, groupId, offset: 0 }));
} }
const verifyGroupApprovers = (await Promise.all(usersPromises)).flat().map((user) => user.id); const verifyGroupApprovers = (await Promise.all(usersPromises))
.flat()
.filter((user) => user.isPartOfGroup)
.map((user) => user.id);
verifyAllApprovers.push(...verifyGroupApprovers); verifyAllApprovers.push(...verifyGroupApprovers);
await verifyApprovers({ await verifyApprovers({
@@ -251,7 +254,7 @@ export const accessApprovalPolicyServiceFactory = ({
>[] = []; >[] = [];
for (const groupId of groupApprovers) { for (const groupId of groupApprovers) {
usersPromises.push(groupDAL.findAllGroupMembers({ orgId: actorOrgId, groupId, offset: 0 })); usersPromises.push(groupDAL.findAllGroupPossibleMembers({ orgId: actorOrgId, groupId, offset: 0 }));
} }
const verifyGroupApprovers = (await Promise.all(usersPromises)).flat().map((user) => user.id); const verifyGroupApprovers = (await Promise.all(usersPromises)).flat().map((user) => user.id);

View File

@@ -58,7 +58,7 @@ type TSecretApprovalRequestServiceFactoryDep = {
TAccessApprovalRequestReviewerDALFactory, TAccessApprovalRequestReviewerDALFactory,
"create" | "find" | "findOne" | "transaction" "create" | "find" | "findOne" | "transaction"
>; >;
groupDAL: Pick<TGroupDALFactory, "findAllGroupMembers">; groupDAL: Pick<TGroupDALFactory, "findAllGroupPossibleMembers">;
projectMembershipDAL: Pick<TProjectMembershipDALFactory, "findById">; projectMembershipDAL: Pick<TProjectMembershipDALFactory, "findById">;
smtpService: Pick<TSmtpService, "sendMail">; smtpService: Pick<TSmtpService, "sendMail">;
userDAL: Pick< userDAL: Pick<
@@ -145,14 +145,14 @@ export const accessApprovalRequestServiceFactory = ({
const groupUsers = ( const groupUsers = (
await Promise.all( await Promise.all(
approverGroupIds.map((groupApproverId) => approverGroupIds.map((groupApproverId) =>
groupDAL.findAllGroupMembers({ groupDAL.findAllGroupPossibleMembers({
orgId: actorOrgId, orgId: actorOrgId,
groupId: groupApproverId groupId: groupApproverId
}) })
) )
) )
).flat(); ).flat();
approverIds.push(...groupUsers.map((user) => user.id)); approverIds.push(...groupUsers.filter((user) => user.isPartOfGroup).map((user) => user.id));
const approverUsers = await userDAL.find({ const approverUsers = await userDAL.find({
$in: { $in: {

View File

@@ -60,7 +60,7 @@ export const groupDALFactory = (db: TDbClient) => {
}; };
// special query // special query
const findAllGroupMembers = async ({ const findAllGroupPossibleMembers = async ({
orgId, orgId,
groupId, groupId,
offset = 0, offset = 0,
@@ -125,7 +125,7 @@ export const groupDALFactory = (db: TDbClient) => {
return { return {
findGroups, findGroups,
findByOrgId, findByOrgId,
findAllGroupMembers, findAllGroupPossibleMembers,
...groupOrm ...groupOrm
}; };
}; };

View File

@@ -30,7 +30,10 @@ import { TUserGroupMembershipDALFactory } from "./user-group-membership-dal";
type TGroupServiceFactoryDep = { type TGroupServiceFactoryDep = {
userDAL: Pick<TUserDALFactory, "find" | "findUserEncKeyByUserIdsBatch" | "transaction" | "findOne">; userDAL: Pick<TUserDALFactory, "find" | "findUserEncKeyByUserIdsBatch" | "transaction" | "findOne">;
groupDAL: Pick<TGroupDALFactory, "create" | "findOne" | "update" | "delete" | "findAllGroupMembers" | "findById">; groupDAL: Pick<
TGroupDALFactory,
"create" | "findOne" | "update" | "delete" | "findAllGroupPossibleMembers" | "findById"
>;
groupProjectDAL: Pick<TGroupProjectDALFactory, "find">; groupProjectDAL: Pick<TGroupProjectDALFactory, "find">;
orgDAL: Pick<TOrgDALFactory, "findMembership" | "countAllOrgMembers">; orgDAL: Pick<TOrgDALFactory, "findMembership" | "countAllOrgMembers">;
userGroupMembershipDAL: Pick< userGroupMembershipDAL: Pick<
@@ -242,7 +245,7 @@ export const groupServiceFactory = ({
message: `Failed to find group with ID ${id}` message: `Failed to find group with ID ${id}`
}); });
const users = await groupDAL.findAllGroupMembers({ const users = await groupDAL.findAllGroupPossibleMembers({
orgId: group.orgId, orgId: group.orgId,
groupId: group.id, groupId: group.id,
offset, offset,

View File

@@ -75,7 +75,14 @@ type TScimServiceFactoryDep = {
projectMembershipDAL: Pick<TProjectMembershipDALFactory, "find" | "delete" | "findProjectMembershipsByUserId">; projectMembershipDAL: Pick<TProjectMembershipDALFactory, "find" | "delete" | "findProjectMembershipsByUserId">;
groupDAL: Pick< groupDAL: Pick<
TGroupDALFactory, TGroupDALFactory,
"create" | "findOne" | "findAllGroupMembers" | "delete" | "findGroups" | "transaction" | "updateById" | "update" | "create"
| "findOne"
| "findAllGroupPossibleMembers"
| "delete"
| "findGroups"
| "transaction"
| "updateById"
| "update"
>; >;
groupProjectDAL: Pick<TGroupProjectDALFactory, "find">; groupProjectDAL: Pick<TGroupProjectDALFactory, "find">;
userGroupMembershipDAL: Pick< userGroupMembershipDAL: Pick<
@@ -775,7 +782,7 @@ export const scimServiceFactory = ({
}); });
} }
const users = await groupDAL.findAllGroupMembers({ const users = await groupDAL.findAllGroupPossibleMembers({
orgId: group.orgId, orgId: group.orgId,
groupId: group.id groupId: group.id
}); });