mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 01:27:31 +00:00
feat: more testing fix
This commit is contained in:
@@ -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,19 +112,36 @@ 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);
|
|
||||||
await smtpService.sendMail({
|
const orgMembershipAcceptedUserIds = orgMembershipAccepted.map((el) => el.actorUserId as string);
|
||||||
template: SmtpTemplates.WorkspaceInvite,
|
const emails = newMembers
|
||||||
subjectLine: "Infisical project invitation",
|
.filter((el) => Boolean(el?.email) && orgMembershipAcceptedUserIds.includes(el.id))
|
||||||
recipients: emails,
|
.map((el) => el?.email as string);
|
||||||
substitutions: {
|
if (emails.length) {
|
||||||
workspaceName: project.name,
|
await smtpService.sendMail({
|
||||||
callback_url: `${appCfg.SITE_URL}/login`
|
template: SmtpTemplates.WorkspaceInvite,
|
||||||
}
|
subjectLine: "Infisical project invitation",
|
||||||
});
|
recipients: emails,
|
||||||
|
substitutions: {
|
||||||
|
workspaceName: project.name,
|
||||||
|
callback_url: `${appCfg.SITE_URL}/login`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
return { signUpTokens: [] };
|
return { signUpTokens: [] };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user