feat: more testing fix

This commit is contained in:
=
2025-10-10 00:09:47 +05:30
parent 8b464c862f
commit e5195403e9
4 changed files with 37 additions and 17 deletions
@@ -1061,16 +1061,16 @@ const rollbackMembershipData = async (knex: Knex) => {
}; };
export async function down(knex: Knex): Promise<void> { 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); const hasRoleTable = await knex.schema.hasTable(TableName.Role);
if (hasRoleTable) { if (hasRoleTable) {
await rollbackRoleData(knex); await rollbackRoleData(knex);
} }
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
if (hasMembershipTable) {
await rollbackMembershipData(knex);
}
const hasMembershipRoleTable = await knex.schema.hasTable(TableName.MembershipRole); const hasMembershipRoleTable = await knex.schema.hasTable(TableName.MembershipRole);
if (hasMembershipRoleTable) { if (hasMembershipRoleTable) {
await rollbackMembershipRoleData(knex); await rollbackMembershipRoleData(knex);
@@ -126,7 +126,7 @@ export const groupServiceFactory = ({
slug: slug || slugify(`${name}-${alphaNumericNanoId(4)}`), slug: slug || slugify(`${name}-${alphaNumericNanoId(4)}`),
orgId: actorOrgId, orgId: actorOrgId,
role: isCustomRole ? OrgMembershipRole.Custom : role, role: isCustomRole ? OrgMembershipRole.Custom : role,
roleId: rolePermissionDetails?.role?.id roleId: null
}, },
tx tx
); );
@@ -195,6 +195,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
db.ref("id").withSchema(TableName.Groups).as("groupId"), db.ref("id").withSchema(TableName.Groups).as("groupId"),
db.ref("slug").withSchema(TableName.Role).as("roleSlug"), 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("id").withSchema(TableName.MembershipRole).as("membershipRoleId"),
db.ref("role").withSchema(TableName.MembershipRole).as("membershipRole"), db.ref("role").withSchema(TableName.MembershipRole).as("membershipRole"),
db.ref("temporaryMode").withSchema(TableName.MembershipRole).as("membershipRoleTemporaryMode"), db.ref("temporaryMode").withSchema(TableName.MembershipRole).as("membershipRoleTemporaryMode"),
@@ -237,6 +238,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
label: "roles" as const, label: "roles" as const,
mapper: ({ mapper: ({
roleSlug, roleSlug,
roleName,
membershipRoleId, membershipRoleId,
membershipRole, membershipRole,
membershipRoleIsTemporary, membershipRoleIsTemporary,
@@ -250,6 +252,7 @@ export const membershipGroupDALFactory = (db: TDbClient) => {
id: membershipRoleId, id: membershipRoleId,
role: membershipRole, role: membershipRole,
customRoleSlug: roleSlug, customRoleSlug: roleSlug,
customRoleName: roleName,
temporaryRange: membershipRoleTemporaryRange, temporaryRange: membershipRoleTemporaryRange,
temporaryMode: membershipRoleTemporaryMode, temporaryMode: membershipRoleTemporaryMode,
temporaryAccessStartTime: membershipRoleTemporaryAccessStartTime, temporaryAccessStartTime: membershipRoleTemporaryAccessStartTime,
@@ -1,6 +1,6 @@
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { AccessScope, ActionProjectType, ProjectMembershipRole } from "@app/db/schemas"; import { AccessScope, ActionProjectType, OrgMembershipStatus, ProjectMembershipRole } from "@app/db/schemas";
import { import {
constructPermissionErrorMessage, constructPermissionErrorMessage,
validatePrivilegeChangeOperation validatePrivilegeChangeOperation
@@ -112,10 +112,26 @@ export const newProjectMembershipUserFactory = ({
dto, dto,
newMembers 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 appCfg = getConfig();
const scope = getScopeField(dto.scopeData); const scope = getScopeField(dto.scopeData);
const project = await projectDAL.findById(scope.value); const project = await projectDAL.findById(scope.value);
const emails = newMembers.filter((el) => Boolean(el?.email)).map((el) => el?.email as string);
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({ await smtpService.sendMail({
template: SmtpTemplates.WorkspaceInvite, template: SmtpTemplates.WorkspaceInvite,
subjectLine: "Infisical project invitation", subjectLine: "Infisical project invitation",
@@ -125,6 +141,7 @@ export const newProjectMembershipUserFactory = ({
callback_url: `${appCfg.SITE_URL}/login` callback_url: `${appCfg.SITE_URL}/login`
} }
}); });
}
return { signUpTokens: [] }; return { signUpTokens: [] };
}; };