mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Add missing membership role to SAML mapped group
This commit is contained in:
@@ -1,21 +1,20 @@
|
|||||||
import { Knex } from "knex";
|
import { Knex } from "knex";
|
||||||
|
|
||||||
import { AccessScope, TableName } from "../schemas";
|
import { AccessScope, OrgMembershipRole, TableName } from "../schemas";
|
||||||
|
|
||||||
export async function up(knex: Knex): Promise<void> {
|
export async function up(knex: Knex): Promise<void> {
|
||||||
const hasGroupsTable = await knex.schema.hasTable(TableName.Groups);
|
const hasGroupsTable = await knex.schema.hasTable(TableName.Groups);
|
||||||
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
|
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
|
||||||
|
const hasMembershipRoleTable = await knex.schema.hasTable(TableName.MembershipRole);
|
||||||
|
|
||||||
if (!hasGroupsTable || !hasMembershipTable) {
|
if (!hasGroupsTable || !hasMembershipTable || !hasMembershipRoleTable) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const groupsWithoutMembership = await knex
|
const groupsWithoutMembership = await knex
|
||||||
.select(`${TableName.Groups}.id`, `${TableName.Groups}.orgId`)
|
.select(`${TableName.Groups}.id`, `${TableName.Groups}.orgId`)
|
||||||
.from(TableName.Groups)
|
.from(TableName.Groups)
|
||||||
.leftJoin(TableName.Membership, function joinGroupMembership() {
|
.leftJoin(TableName.Membership, `${TableName.Groups}.id`, `${TableName.Membership}.actorGroupId`)
|
||||||
this.on(`${TableName.Groups}.id`, "=", `${TableName.Membership}.actorGroupId`);
|
|
||||||
})
|
|
||||||
.whereNull(`${TableName.Membership}.actorGroupId`);
|
.whereNull(`${TableName.Membership}.actorGroupId`);
|
||||||
|
|
||||||
if (groupsWithoutMembership.length > 0) {
|
if (groupsWithoutMembership.length > 0) {
|
||||||
@@ -26,7 +25,15 @@ export async function up(knex: Knex): Promise<void> {
|
|||||||
isActive: true
|
isActive: true
|
||||||
}));
|
}));
|
||||||
|
|
||||||
await knex(TableName.Membership).insert(membershipInserts);
|
const insertedMemberships = await knex(TableName.Membership).insert(membershipInserts).returning("*");
|
||||||
|
|
||||||
|
const membershipRoleInserts = insertedMemberships.map((membership) => ({
|
||||||
|
membershipId: membership.id,
|
||||||
|
role: OrgMembershipRole.NoAccess,
|
||||||
|
customRoleId: null
|
||||||
|
}));
|
||||||
|
|
||||||
|
await knex(TableName.MembershipRole).insert(membershipRoleInserts);
|
||||||
}
|
}
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.Membership, (t) => {
|
await knex.schema.alterTable(TableName.Membership, (t) => {
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ export const samlConfigServiceFactory = ({
|
|||||||
transaction
|
transaction
|
||||||
);
|
);
|
||||||
orgGroupsMap.set(groupName, newGroup);
|
orgGroupsMap.set(groupName, newGroup);
|
||||||
await membershipGroupDAL.create(
|
const orgMembership = await membershipGroupDAL.create(
|
||||||
{
|
{
|
||||||
actorGroupId: newGroup.id,
|
actorGroupId: newGroup.id,
|
||||||
scope: AccessScope.Organization,
|
scope: AccessScope.Organization,
|
||||||
@@ -191,6 +191,14 @@ export const samlConfigServiceFactory = ({
|
|||||||
},
|
},
|
||||||
transaction
|
transaction
|
||||||
);
|
);
|
||||||
|
await membershipRoleDAL.create(
|
||||||
|
{
|
||||||
|
membershipId: orgMembership.id,
|
||||||
|
role: OrgMembershipRole.NoAccess,
|
||||||
|
customRoleId: null
|
||||||
|
},
|
||||||
|
transaction
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user