Add missing membership role to SAML mapped group

This commit is contained in:
Carlos Monastyrski
2025-10-23 15:38:37 -03:00
parent 666a09b86b
commit 5e316d9d6e
2 changed files with 22 additions and 7 deletions

View File

@@ -1,21 +1,20 @@
import { Knex } from "knex";
import { AccessScope, TableName } from "../schemas";
import { AccessScope, OrgMembershipRole, TableName } from "../schemas";
export async function up(knex: Knex): Promise<void> {
const hasGroupsTable = await knex.schema.hasTable(TableName.Groups);
const hasMembershipTable = await knex.schema.hasTable(TableName.Membership);
const hasMembershipRoleTable = await knex.schema.hasTable(TableName.MembershipRole);
if (!hasGroupsTable || !hasMembershipTable) {
if (!hasGroupsTable || !hasMembershipTable || !hasMembershipRoleTable) {
return;
}
const groupsWithoutMembership = await knex
.select(`${TableName.Groups}.id`, `${TableName.Groups}.orgId`)
.from(TableName.Groups)
.leftJoin(TableName.Membership, function joinGroupMembership() {
this.on(`${TableName.Groups}.id`, "=", `${TableName.Membership}.actorGroupId`);
})
.leftJoin(TableName.Membership, `${TableName.Groups}.id`, `${TableName.Membership}.actorGroupId`)
.whereNull(`${TableName.Membership}.actorGroupId`);
if (groupsWithoutMembership.length > 0) {
@@ -26,7 +25,15 @@ export async function up(knex: Knex): Promise<void> {
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) => {

View File

@@ -183,7 +183,7 @@ export const samlConfigServiceFactory = ({
transaction
);
orgGroupsMap.set(groupName, newGroup);
await membershipGroupDAL.create(
const orgMembership = await membershipGroupDAL.create(
{
actorGroupId: newGroup.id,
scope: AccessScope.Organization,
@@ -191,6 +191,14 @@ export const samlConfigServiceFactory = ({
},
transaction
);
await membershipRoleDAL.create(
{
membershipId: orgMembership.id,
role: OrgMembershipRole.NoAccess,
customRoleId: null
},
transaction
);
}
}