mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
misc: added privilege check for project user invite
This commit is contained in:
@@ -24,6 +24,7 @@ import {
|
|||||||
OrgPermissionGroupActions,
|
OrgPermissionGroupActions,
|
||||||
OrgPermissionSubjects
|
OrgPermissionSubjects
|
||||||
} from "@app/ee/services/permission/org-permission";
|
} from "@app/ee/services/permission/org-permission";
|
||||||
|
import { validatePrivilegeChangeOperation } from "@app/ee/services/permission/permission-fns";
|
||||||
import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service";
|
import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service";
|
||||||
import { ProjectPermissionMemberActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission";
|
import { ProjectPermissionMemberActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission";
|
||||||
import { TProjectUserAdditionalPrivilegeDALFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-dal";
|
import { TProjectUserAdditionalPrivilegeDALFactory } from "@app/ee/services/project-user-additional-privilege/project-user-additional-privilege-dal";
|
||||||
@@ -872,6 +873,27 @@ export const orgServiceFactory = ({
|
|||||||
ProjectMembershipRole.Member
|
ProjectMembershipRole.Member
|
||||||
];
|
];
|
||||||
|
|
||||||
|
for await (const invitedRole of invitedProjectRoles) {
|
||||||
|
const { permission: rolePermission } = await permissionService.getProjectPermissionByRole(
|
||||||
|
invitedRole,
|
||||||
|
projectId
|
||||||
|
);
|
||||||
|
|
||||||
|
const permissionBoundary = validatePrivilegeChangeOperation(
|
||||||
|
ProjectPermissionMemberActions.ManagePrivileges,
|
||||||
|
ProjectPermissionSub.Member,
|
||||||
|
projectPermission,
|
||||||
|
rolePermission
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!permissionBoundary.isValid)
|
||||||
|
throw new ForbiddenRequestError({
|
||||||
|
name: "PermissionBoundaryError",
|
||||||
|
message: "Failed to invite user to a more privileged role in the project",
|
||||||
|
details: { missingPermissions: permissionBoundary.missingPermissions }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const customProjectRoles = invitedProjectRoles.filter(
|
const customProjectRoles = invitedProjectRoles.filter(
|
||||||
(role) => !Object.values(ProjectMembershipRole).includes(role as ProjectMembershipRole)
|
(role) => !Object.values(ProjectMembershipRole).includes(role as ProjectMembershipRole)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user