Merge pull request #4814 from Infisical/patch/membership-project

feat: resolved project membership auto adding to organization
This commit is contained in:
Akhil Mohan
2025-11-06 00:55:07 +05:30
committed by GitHub
2 changed files with 14 additions and 10 deletions
@@ -2,6 +2,7 @@ import { z } from "zod";
import { import {
AccessScope, AccessScope,
OrgMembershipRole,
ProjectMembershipRole, ProjectMembershipRole,
ProjectMembershipsSchema, ProjectMembershipsSchema,
ProjectUserMembershipRolesSchema, ProjectUserMembershipRolesSchema,
@@ -266,6 +267,19 @@ export const registerProjectMembershipRouter = async (server: FastifyZodProvider
onRequest: verifyAuth([AuthMode.JWT, AuthMode.API_KEY, AuthMode.IDENTITY_ACCESS_TOKEN]), onRequest: verifyAuth([AuthMode.JWT, AuthMode.API_KEY, AuthMode.IDENTITY_ACCESS_TOKEN]),
handler: async (req) => { handler: async (req) => {
const usernamesAndEmails = [...req.body.emails, ...req.body.usernames]; const usernamesAndEmails = [...req.body.emails, ...req.body.usernames];
await server.services.membershipUser.createMembership({
permission: req.permission,
scopeData: {
scope: AccessScope.Organization,
orgId: req.permission.orgId
},
data: {
roles: [{ isTemporary: false, role: OrgMembershipRole.NoAccess }],
usernames: usernamesAndEmails
}
});
const { memberships } = await server.services.membershipUser.createMembership({ const { memberships } = await server.services.membershipUser.createMembership({
permission: req.permission, permission: req.permission,
scopeData: { scopeData: {
@@ -25,14 +25,12 @@ import {
useProject useProject
} from "@app/context"; } from "@app/context";
import { import {
useAddUsersToOrg,
useAddUserToWsNonE2EE, useAddUserToWsNonE2EE,
useGetOrgUsers, useGetOrgUsers,
useGetProjectRoles, useGetProjectRoles,
useGetWorkspaceUsers useGetWorkspaceUsers
} from "@app/hooks/api"; } from "@app/hooks/api";
import { ProjectVersion } from "@app/hooks/api/projects/types"; import { ProjectVersion } from "@app/hooks/api/projects/types";
import { ProjectMembershipRole } from "@app/hooks/api/roles/types";
import { UsePopUpState } from "@app/hooks/usePopUp"; import { UsePopUpState } from "@app/hooks/usePopUp";
const addMemberFormSchema = z.object({ const addMemberFormSchema = z.object({
@@ -86,7 +84,6 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
defaultValues: { orgMemberships: [], projectRoleSlugs: [] } defaultValues: { orgMemberships: [], projectRoleSlugs: [] }
}); });
const { mutateAsync: addMemberToOrg } = useAddUsersToOrg();
const { mutateAsync: addUserToProject } = useAddUserToWsNonE2EE(); const { mutateAsync: addUserToProject } = useAddUserToWsNonE2EE();
useEffect(() => { useEffect(() => {
@@ -140,13 +137,6 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
return; return;
} }
if (newInvitees.length) {
await addMemberToOrg({
inviteeEmails: newInvitees,
organizationId: orgId,
organizationRoleSlug: ProjectMembershipRole.Member // only applies to new invites
});
}
if (newInvitees.length || inviteeEmails.length) { if (newInvitees.length || inviteeEmails.length) {
await addUserToProject({ await addUserToProject({
usernames: [...inviteeEmails, ...newInvitees], usernames: [...inviteeEmails, ...newInvitees],