feat: more testing fix

This commit is contained in:
=
2025-10-07 23:26:12 +05:30
parent 8b464c862f
commit e5195403e9
4 changed files with 37 additions and 17 deletions

View File

@@ -1061,16 +1061,16 @@ const rollbackMembershipData = async (knex: Knex) => {
};
export async function down(knex: Knex): Promise<void> {
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
if (hasMembershipTable) {
await rollbackMembershipData(knex);
}
const hasRoleTable = await knex.schema.hasTable(TableName.Role);
if (hasRoleTable) {
await rollbackRoleData(knex);
}
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
if (hasMembershipTable) {
await rollbackMembershipData(knex);
}
const hasMembershipRoleTable = await knex.schema.hasTable(TableName.MembershipRole);
if (hasMembershipRoleTable) {
await rollbackMembershipRoleData(knex);

View File

@@ -126,7 +126,7 @@ export const groupServiceFactory = ({
slug: slug || slugify(`${name}-${alphaNumericNanoId(4)}`),
orgId: actorOrgId,
role: isCustomRole ? OrgMembershipRole.Custom : role,
roleId: rolePermissionDetails?.role?.id
roleId: null
},
tx
);

View File

@@ -195,6 +195,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
db.ref("id").withSchema(TableName.Groups).as("groupId"),
db.ref("slug").withSchema(TableName.Role).as("roleSlug"),
db.ref("name").withSchema(TableName.Role).as("roleName"),
db.ref("id").withSchema(TableName.MembershipRole).as("membershipRoleId"),
db.ref("role").withSchema(TableName.MembershipRole).as("membershipRole"),
db.ref("temporaryMode").withSchema(TableName.MembershipRole).as("membershipRoleTemporaryMode"),
@@ -237,6 +238,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
label: "roles" as const,
mapper: ({
roleSlug,
roleName,
membershipRoleId,
membershipRole,
membershipRoleIsTemporary,
@@ -250,6 +252,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
id: membershipRoleId,
role: membershipRole,
customRoleSlug: roleSlug,
customRoleName: roleName,
temporaryRange: membershipRoleTemporaryRange,
temporaryMode: membershipRoleTemporaryMode,
temporaryAccessStartTime: membershipRoleTemporaryAccessStartTime,

View File

@@ -1,6 +1,6 @@
import { ForbiddenError } from "@casl/ability";
import { AccessScope, ActionProjectType, ProjectMembershipRole } from "@app/db/schemas";
import { AccessScope, ActionProjectType, OrgMembershipStatus, ProjectMembershipRole } from "@app/db/schemas";
import {
constructPermissionErrorMessage,
validatePrivilegeChangeOperation
@@ -112,19 +112,36 @@ export const newProjectMembershipUserFactory = ({
dto,
newMembers
) => {
const orgMembershipAccepted = await membershipUserDAL.find({
scope: AccessScope.Organization,
scopeOrgId: dto.permission.orgId,
status: OrgMembershipStatus.Accepted,
$in: {
actorUserId: newMembers.map((el) => el.id)
}
});
if (!orgMembershipAccepted.length) return { signUpTokens: [] };
const appCfg = getConfig();
const scope = getScopeField(dto.scopeData);
const project = await projectDAL.findById(scope.value);
const emails = newMembers.filter((el) => Boolean(el?.email)).map((el) => el?.email as string);
await smtpService.sendMail({
template: SmtpTemplates.WorkspaceInvite,
subjectLine: "Infisical project invitation",
recipients: emails,
substitutions: {
workspaceName: project.name,
callback_url: `${appCfg.SITE_URL}/login`
}
});
const orgMembershipAcceptedUserIds = orgMembershipAccepted.map((el) => el.actorUserId as string);
const emails = newMembers
.filter((el) => Boolean(el?.email) && orgMembershipAcceptedUserIds.includes(el.id))
.map((el) => el?.email as string);
if (emails.length) {
await smtpService.sendMail({
template: SmtpTemplates.WorkspaceInvite,
subjectLine: "Infisical project invitation",
recipients: emails,
substitutions: {
workspaceName: project.name,
callback_url: `${appCfg.SITE_URL}/login`
}
});
}
return { signUpTokens: [] };
};