Merge pull request #3921 from Infisical/misc/allow-users-with-create-identity-to-invite-no-access

misc: allow users with create permission to add identities with no access
This commit is contained in:
Maidul Islam
2025-07-03 19:27:04 -04:00
committed by GitHub
2 changed files with 39 additions and 34 deletions
@@ -93,23 +93,25 @@ export const identityProjectServiceFactory = ({
projectId projectId
); );
const permissionBoundary = validatePrivilegeChangeOperation( if (requestedRoleChange !== ProjectMembershipRole.NoAccess) {
membership.shouldUseNewPrivilegeSystem, const permissionBoundary = validatePrivilegeChangeOperation(
ProjectPermissionIdentityActions.GrantPrivileges, membership.shouldUseNewPrivilegeSystem,
ProjectPermissionSub.Identity, ProjectPermissionIdentityActions.GrantPrivileges,
permission, ProjectPermissionSub.Identity,
rolePermission permission,
); rolePermission
if (!permissionBoundary.isValid) );
throw new PermissionBoundaryError({ if (!permissionBoundary.isValid)
message: constructPermissionErrorMessage( throw new PermissionBoundaryError({
"Failed to assign to role", message: constructPermissionErrorMessage(
membership.shouldUseNewPrivilegeSystem, "Failed to assign to role",
ProjectPermissionIdentityActions.GrantPrivileges, membership.shouldUseNewPrivilegeSystem,
ProjectPermissionSub.Identity ProjectPermissionIdentityActions.GrantPrivileges,
), ProjectPermissionSub.Identity
details: { missingPermissions: permissionBoundary.missingPermissions } ),
}); details: { missingPermissions: permissionBoundary.missingPermissions }
});
}
} }
// validate custom roles input // validate custom roles input
@@ -69,23 +69,25 @@ export const identityServiceFactory = ({
orgId orgId
); );
const isCustomRole = Boolean(customRole); const isCustomRole = Boolean(customRole);
const permissionBoundary = validatePrivilegeChangeOperation( if (role !== OrgMembershipRole.NoAccess) {
membership.shouldUseNewPrivilegeSystem, const permissionBoundary = validatePrivilegeChangeOperation(
OrgPermissionIdentityActions.GrantPrivileges, membership.shouldUseNewPrivilegeSystem,
OrgPermissionSubjects.Identity, OrgPermissionIdentityActions.GrantPrivileges,
permission, OrgPermissionSubjects.Identity,
rolePermission permission,
); rolePermission
if (!permissionBoundary.isValid) );
throw new PermissionBoundaryError({ if (!permissionBoundary.isValid)
message: constructPermissionErrorMessage( throw new PermissionBoundaryError({
"Failed to create identity", message: constructPermissionErrorMessage(
membership.shouldUseNewPrivilegeSystem, "Failed to create identity",
OrgPermissionIdentityActions.GrantPrivileges, membership.shouldUseNewPrivilegeSystem,
OrgPermissionSubjects.Identity OrgPermissionIdentityActions.GrantPrivileges,
), OrgPermissionSubjects.Identity
details: { missingPermissions: permissionBoundary.missingPermissions } ),
}); details: { missingPermissions: permissionBoundary.missingPermissions }
});
}
const plan = await licenseService.getPlan(orgId); const plan = await licenseService.getPlan(orgId);
@@ -187,6 +189,7 @@ export const identityServiceFactory = ({
), ),
details: { missingPermissions: appliedRolePermissionBoundary.missingPermissions } details: { missingPermissions: appliedRolePermissionBoundary.missingPermissions }
}); });
if (isCustomRole) customRole = customOrgRole; if (isCustomRole) customRole = customOrgRole;
} }