Fixed mihrations

This commit is contained in:
kriks7iitk 2024-07-09 11:34:19 +05:30
parent 125be1a9a3
commit 36b5f09c55
5 changed files with 118 additions and 84 deletions

View file

@ -22,31 +22,42 @@ import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm';
export class CreateDefaultGroupInExistingWorkspace1720352990850 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
const manager = queryRunner.manager;
const organizationIds = await manager.find(Organization, {
select: ['id'],
});
for (const organizationId in organizationIds) {
const organizationIds = (
await manager.find(Organization, {
select: ['id'],
})
).map((organization) => organization.id);
for (const organizationId of organizationIds) {
for (const defaultGroup of Object.keys(USER_ROLE)) {
const groupPermissions = DEFAULT_GROUP_PERMISSIONS[defaultGroup];
const query = `
INSERT INTO permission_groups (
organization_id,
name,
type,
app_create,
app_delete,
folder_crud,
org_constant_crud,
data_source_create,
data_source_delete,
) VALUES (
${organizationId} , ${groupPermissions.name} , ${groupPermissions.type},${groupPermissions.appCreate}, ${groupPermissions.appDelete}
, ${groupPermissions.folderCRUD}, ${groupPermissions.orgConstantCRUD}, ${groupPermissions.dataSourceCreate}, ${groupPermissions.dataSourceDelete}
) RETURNING *;`;
const group: GroupPermissions = await manager.query(query);
INSERT INTO permission_groups (
organization_id,
name,
type,
app_create,
app_delete,
folder_crud,
org_constant_crud,
data_source_create,
data_source_delete
) VALUES (
'${organizationId}',
'${groupPermissions.name}',
'${groupPermissions.type}',
${groupPermissions.appCreate},
${groupPermissions.appDelete},
${groupPermissions.folderCRUD},
${groupPermissions.orgConstantCRUD},
${groupPermissions.dataSourceCreate},
${groupPermissions.dataSourceDelete}
) RETURNING *;
`;
const group: GroupPermissions = (await manager.query(query))[0];
const groupGranularPermissions: Record<ResourceType, CreateResourcePermissionObject> =
DEFAULT_RESOURCE_PERMISSIONS[group.name];
for (const resource of Object.keys(groupGranularPermissions)) {
const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource];
const dtoObject = {
@ -54,6 +65,7 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra
groupId: group.id,
type: resource as ResourceType,
isAll: true,
createAppsPermissionsObject: {},
};
const granularPermissions = await this.createGranularPermission(manager, dtoObject);
await this.createAppsResourcePermission(
@ -67,14 +79,14 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra
const adminsUsers = await manager
.createQueryBuilder(UserGroupPermission, 'usersGroup')
.innerJoin(
'userGroup.groupPermission',
'usersGroup.groupPermission',
'groupPermission',
'groupPermission.organizationId := organizationId',
'groupPermission.organizationId = :organizationId',
{
organizationId,
}
)
.where('groupPermission.group := admin', {
.where('groupPermission.group = :admin', {
admin: 'admin',
})
.getMany();
@ -90,16 +102,16 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra
createObject: CreateGranularPermissionDto
): Promise<GranularPermissions> {
const query = `
INSERT INTO granular_permissions (
group_id,
name,
type,
is_all,
) VALUES (
${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll}
) RETURNING *;`;
return await manager.query(query);
INSERT INTO granular_permissions (
group_id,
name,
type,
is_all
) VALUES (
'${createObject.groupId}', '${createObject.name}', '${createObject.type}', ${createObject.isAll}
) RETURNING *;
`;
return (await manager.query(query))[0];
}
async createAppsResourcePermission(
@ -109,24 +121,25 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra
): Promise<AppsGroupPermissions> {
const { granularPermissions } = createMeta;
const query = `
INSERT INTO apps_group_permissions (
granular_permission_id,
can_edit,
can_view,
hide_from_dashboard,
) VALUES (
${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard}
) RETURNING *;`;
return await manager.query(query);
INSERT INTO apps_group_permissions (
granular_permission_id,
can_edit,
can_view,
hide_from_dashboard
) VALUES (
'${granularPermissions.id}', ${createObject.canEdit}, ${createObject.canView}, ${createObject.hideFromDashboard}
) RETURNING *;
`;
return (await manager.query(query))[0];
}
async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) {
const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`;
const query = `INSERT INTO group_users (
user_id,
group_id
) VALUES ${valuesString}`;
if (userIds.length == 0) return;
const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(',');
const query = `
INSERT INTO group_users (user_id, group_id)
VALUES ${valuesString};
`;
return await manager.query(query);
}

View file

@ -25,9 +25,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme
const userIdsWithEditPermissions = (
await manager
.createQueryBuilder(User, 'users')
.innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', {
organizationId,
})
.innerJoin(
'users.organizationUsers',
'organization_users',
'organization_users.organizationId = :organizationId ',
{
organizationId,
}
)
.innerJoin(
'users.groupPermissions',
'group_permissions',
@ -49,9 +54,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme
const userIdsOfAppOwners = (
await manager
.createQueryBuilder(User, 'users')
.innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', {
organizationId,
})
.innerJoin(
'users.organizationUsers',
'organization_users',
'organization_users.organizationId = :organizationId',
{
organizationId,
}
)
.innerJoin('users.apps', 'apps')
.select('users.id')
.distinct()
@ -62,14 +72,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme
await manager
.createQueryBuilder(UserGroupPermission, 'usersGroup')
.innerJoin(
'userGroup.groupPermission',
'usersGroup.groupPermission',
'groupPermission',
'groupPermission.organizationId := organizationId',
'groupPermission.organizationId = :organizationId',
{
organizationId,
}
)
.where('groupPermission.name := admin', {
.where('groupPermission.group = :admin', {
admin: 'admin',
})
.getMany()
@ -82,6 +92,10 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme
const endUserGroup = await manager.findOne(GroupPermissions, {
where: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId },
});
console.log('Builders users');
console.log(builderUsersWoAdmin);
await this.migrateUserGroup(manager, builderUsersWoAdmin, builderGroup.id);
const organizationUser = (
await manager.find(OrganizationUser, {
@ -97,11 +111,12 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme
}
async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) {
const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`;
const query = `INSERT INTO group_users (
user_id,
group_id
) VALUES ${valuesString}`;
if (userIds.length === 0) return;
const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(',');
const query = `
INSERT INTO group_users (user_id, group_id)
VALUES ${valuesString};
`;
return await manager.query(query);
}

View file

@ -30,12 +30,12 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
for (const organizationId of organizationIds) {
const groups = await manager
.createQueryBuilder(GroupPermission, 'groupPermission')
.where('groupPermission.organizationId := organizationId', {
.where('groupPermission.organizationId = :organizationId', {
organizationId,
})
.innerJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission')
.innerJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission')
.andWhere('groupPermission.group != admin', {
.andWhere('groupPermission.group != :admin', {
admin: 'admin',
})
.getMany();
@ -56,7 +56,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
${organizationId} , ${groupPermissions.group} , ${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP},${groupPermissions.appCreate}, ${groupPermissions.appDelete}
, ${groupPermissions.folderCreate}, ${groupPermissions.orgEnvironmentConstantCreate}, false , false
) RETURNING *;`;
const group: GroupPermissions = await manager.query(query);
const group: GroupPermissions = (await manager.query(query))[0];
const existingGroupUsers = groupPermissions.userGroupPermission;
await this.migrateUserGroup(
manager,
@ -132,12 +132,9 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
) VALUES (
${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll}
) RETURNING *;`;
return await manager.query(query);
return (await manager.query(query))[0];
}
//Add check custom_builder , custom_end-user, -->
// All users permissions..
async createAppsResourcePermission(
manager: EntityManager,
createMeta: ResourcePermissionMetaData,
@ -145,16 +142,19 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
): Promise<AppsGroupPermissions> {
const { granularPermissions } = createMeta;
const query = `
INSERT INTO apps_group_permissions (
granular_permission_id,
can_edit,
can_view,
hide_from_dashboard,
) VALUES (
${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard}
) RETURNING *;`;
return await manager.query(query);
INSERT INTO apps_group_permissions (
granular_permission_id,
can_edit,
can_view,
hide_from_dashboard
) VALUES (
${granularPermissions.id},
${createObject.canEdit},
${createObject.canView},
${createObject.hideFromDashboard}
) RETURNING *;
`;
return (await manager.query(query))[0];
}
async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) {
@ -167,11 +167,11 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
}
async addAppsGroupToPermissions(manager: EntityManager, appIds: string[], appPermissionsId: string) {
const valuesString = `( ${appIds.map((id) => `(${id}, ${appPermissionsId} )`).join(',')} )`;
const query = `INSERT INTO group_apps (
app_id,
apps_group_permissions_id
) VALUES ${valuesString}`;
const valuesString = appIds.map((id) => `('${id}', '${appPermissionsId}')`).join(',');
const query = `
INSERT INTO group_apps (app_id, apps_group_permissions_id)
VALUES ${valuesString};
`;
return await manager.query(query);
}
@ -190,6 +190,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI
groupId: group.id,
type: resource as ResourceType,
isAll: false,
createAppsPermissionsObject: {},
};
const granularPermissions = await this.createGranularPermission(manager, dtoObject);
const appsGroupPermissions = await this.createAppsResourcePermission(

View file

@ -5,6 +5,7 @@ import {
ResourceGroupActions,
GranularPermissionAddResourceItems,
GranularPermissionDeleteResourceItems,
CreateAppsPermissionsObject,
} from '@module/user_resource_permissions/interface/granular-permissions.interface';
export class CreateGranularPermissionDto {
@ -25,6 +26,9 @@ export class CreateGranularPermissionDto {
@IsNotEmpty()
type: ResourceType;
@IsOptional()
createAppsPermissionsObject: CreateAppsPermissionsObject;
// @IsBoolean()
// @IsOptional()
// allowRoleChange: boolean;

View file

@ -54,6 +54,7 @@ export class UserRoleService {
groupId: group.id,
type: resource as ResourceType,
isAll: true,
createAppsPermissionsObject: {},
};
await this.granularPermissionsService.create(
{