feat: added saml parsing attributes and injecting to metadata of a user in org scoped

This commit is contained in:
=
2024-10-02 00:39:43 +05:30
parent 77e191d63e
commit 4928322cdb
15 changed files with 164 additions and 59 deletions
@@ -56,11 +56,11 @@ export const identityOrgDALFactory = (db: TDbClient) => {
queryBuilder.on(`${TableName.IdentityOrgMembership}.identityId`, `${TableName.Identity}.id`);
})
.leftJoin(TableName.OrgRoles, `${TableName.IdentityOrgMembership}.roleId`, `${TableName.OrgRoles}.id`)
.leftJoin(
TableName.IdentityMetadata,
`${TableName.IdentityMetadata}.identityOrgMembershipId`,
`${TableName.IdentityOrgMembership}.id`
)
.leftJoin(TableName.IdentityMetadata, (queryBuilder) => {
void queryBuilder
.on(`${TableName.IdentityOrgMembership}.identityId`, `${TableName.IdentityMetadata}.identityId`)
.andOn(`${TableName.IdentityOrgMembership}.orgId`, `${TableName.IdentityMetadata}.orgId`);
})
.select(selectAllTableCols(TableName.IdentityOrgMembership))
// cr stands for custom role
.select(db.ref("id").as("crId").withSchema(TableName.OrgRoles))
@@ -73,7 +73,7 @@ export const identityServiceFactory = ({
const identity = await identityDAL.transaction(async (tx) => {
const newIdentity = await identityDAL.create({ name }, tx);
const identityOrgMembership = await identityOrgMembershipDAL.create(
await identityOrgMembershipDAL.create(
{
identityId: newIdentity.id,
orgId,
@@ -85,7 +85,8 @@ export const identityServiceFactory = ({
if (metadata && metadata.length) {
await identityMetadataDAL.insertMany(
metadata.map(({ key, value }) => ({
identityOrgMembershipId: identityOrgMembership.id,
identityId: newIdentity.id,
orgId,
key,
value
})),
@@ -159,11 +160,12 @@ export const identityServiceFactory = ({
);
}
if (metadata) {
await identityMetadataDAL.delete({ identityOrgMembershipId: identityOrgMembership.id }, tx);
await identityMetadataDAL.delete({ orgId: identityOrgMembership.orgId, identityId: id }, tx);
if (metadata.length) {
await identityMetadataDAL.insertMany(
metadata.map(({ key, value }) => ({
identityOrgMembershipId: identityOrgMembership.id,
identityId: newIdentity.id,
orgId: identityOrgMembership.orgId,
key,
value
})),