diff --git a/backend/src/server/routes/v3/signup-router.ts b/backend/src/server/routes/v3/signup-router.ts index 276a2e8cb..2b603f523 100644 --- a/backend/src/server/routes/v3/signup-router.ts +++ b/backend/src/server/routes/v3/signup-router.ts @@ -180,7 +180,7 @@ export const registerSignupRouter = async (server: FastifyZodProvider) => { encryptedPrivateKeyTag: z.string().trim(), salt: z.string().trim(), verifier: z.string().trim(), - metadata: z.string().optional() + tokenMetadata: z.string().optional() }), response: { 200: z.object({ diff --git a/backend/src/services/auth/auth-signup-service.ts b/backend/src/services/auth/auth-signup-service.ts index 33092484e..7cca07110 100644 --- a/backend/src/services/auth/auth-signup-service.ts +++ b/backend/src/services/auth/auth-signup-service.ts @@ -313,7 +313,7 @@ export const authSignupServiceFactory = ({ encryptedPrivateKeyIV, encryptedPrivateKeyTag, authorization, - metadata + tokenMetadata }: TCompleteAccountInviteDTO) => { const user = await userDAL.findUserByUsername(email); if (!user || (user && user.isAccepted)) { @@ -370,13 +370,13 @@ export const authSignupServiceFactory = ({ tx ); - if (metadata) { - const metadataObj = jwt.verify(metadata, appCfg.AUTH_SECRET) as TTokenMetadata; + if (tokenMetadata) { + const metadataObj = jwt.verify(tokenMetadata, appCfg.AUTH_SECRET) as TTokenMetadata; if ( - metadataObj.payload.userId !== user.id || - metadataObj.payload.orgId !== orgMembership.orgId || - metadataObj.type !== TokenMetadataType.InviteToProjects + metadataObj?.payload?.userId !== user.id || + metadataObj?.payload?.orgId !== orgMembership.orgId || + metadataObj?.type !== TokenMetadataType.InviteToProjects ) { throw new UnauthorizedError({ message: "Malformed or invalid metadata token" diff --git a/backend/src/services/auth/auth-signup-type.ts b/backend/src/services/auth/auth-signup-type.ts index c5c535f39..3308b9d12 100644 --- a/backend/src/services/auth/auth-signup-type.ts +++ b/backend/src/services/auth/auth-signup-type.ts @@ -37,5 +37,5 @@ export type TCompleteAccountInviteDTO = { ip: string; userAgent: string; authorization: string; - metadata?: string; + tokenMetadata?: string; }; diff --git a/backend/src/services/org/org-service.ts b/backend/src/services/org/org-service.ts index c2a3133d3..6696a5323 100644 --- a/backend/src/services/org/org-service.ts +++ b/backend/src/services/org/org-service.ts @@ -546,15 +546,11 @@ export const orgServiceFactory = ({ }); } + await projectMembershipDAL.insertMany( + projectIds.map((id) => ({ projectId: id, userId: inviteeUser.id })), + tx + ); for await (const projectId of projectIds) { - await projectMembershipDAL.create( - { - projectId, - userId: inviteeUser.id - }, - tx - ); - await addMembersToProject({ orgDAL, projectDAL, diff --git a/frontend/src/hooks/api/auth/types.ts b/frontend/src/hooks/api/auth/types.ts index 5ca5c75a2..3664e8e96 100644 --- a/frontend/src/hooks/api/auth/types.ts +++ b/frontend/src/hooks/api/auth/types.ts @@ -93,7 +93,7 @@ export type CompleteAccountDTO = { salt: string; verifier: string; password: string; - metadata?: string; + tokenMetadata?: string; }; export type CompleteAccountSignupDTO = CompleteAccountDTO & { diff --git a/frontend/src/pages/signupinvite.tsx b/frontend/src/pages/signupinvite.tsx index 9c5c01b32..713a64eb3 100644 --- a/frontend/src/pages/signupinvite.tsx +++ b/frontend/src/pages/signupinvite.tsx @@ -165,7 +165,7 @@ export default function SignupInvite() { encryptedPrivateKeyTag, salt: result.salt, verifier: result.verifier, - metadata + tokenMetadata: metadata }); // unset temporary signup JWT token and set JWT token