From 0eb16f55e7fc86a8e95cc8710d477f58eafa7cd1 Mon Sep 17 00:00:00 2001 From: devanshu052000 Date: Tue, 22 Apr 2025 13:54:43 +0530 Subject: [PATCH 1/3] End user visible in editor even when view permissions are revoked --- server/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/ee b/server/ee index d14468b695..f18319f145 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit d14468b6954cc33616b02802c49db2deac6be105 +Subproject commit f18319f145367e9f6a66110f16587d858470f166 From b1f3c129958bef03cf336d68c2c3808d6262bb37 Mon Sep 17 00:00:00 2001 From: devanshu052000 Date: Tue, 22 Apr 2025 16:16:23 +0530 Subject: [PATCH 2/3] Added error if permission already exists on creating a page permission --- server/ee | 2 +- .../page-permissions.repository.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/server/ee b/server/ee index f18319f145..472e07a6f6 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit f18319f145367e9f6a66110f16587d858470f166 +Subproject commit 472e07a6f66a7c80e42b18256511e8c3a6829eb4 diff --git a/server/src/modules/app-permissions/repositories/page-permissions.repository.ts b/server/src/modules/app-permissions/repositories/page-permissions.repository.ts index 41c4741dc2..7caa5f4318 100644 --- a/server/src/modules/app-permissions/repositories/page-permissions.repository.ts +++ b/server/src/modules/app-permissions/repositories/page-permissions.repository.ts @@ -13,10 +13,21 @@ export class PagePermissionsRepository extends Repository { async getPagePermissions(pageId: string, manager?: EntityManager): Promise { return dbTransactionWrap(async (manager: EntityManager) => { - return manager.find(PagePermission, { + const pagePermissions = await manager.find(PagePermission, { where: { pageId }, relations: ['users', 'users.user', 'users.permissionGroup'], }); + + return pagePermissions.map((permission) => { + if (permission.type === PAGE_PERMISSION_TYPE.GROUP) { + return { + ...permission, + groups: permission.users, + users: undefined, + }; + } + return permission; + }); }, manager || this.manager); } @@ -26,6 +37,11 @@ export class PagePermissionsRepository extends Repository { manager?: EntityManager ): Promise { return dbTransactionWrap(async (manager: EntityManager) => { + const existingPermission = await manager.findOne(PagePermission, { where: { pageId } }); + if (existingPermission) { + throw new Error(`Page permission already exists for Page id: ${pageId}`); + } + const pagePermission = manager.create(PagePermission, { pageId, type, From 962b7dc8b14078b9c8afd54f118fa855fe915c40 Mon Sep 17 00:00:00 2001 From: devanshu052000 Date: Tue, 22 Apr 2025 16:35:50 +0530 Subject: [PATCH 3/3] Added useful indexes to the entities for query optimization --- server/src/entities/group_permissions.entity.ts | 2 ++ server/src/entities/group_users.entity.ts | 3 +++ server/src/entities/page_users.entity.ts | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts index 693f4f930c..92868d7510 100644 --- a/server/src/entities/group_permissions.entity.ts +++ b/server/src/entities/group_permissions.entity.ts @@ -3,6 +3,7 @@ import { Column, CreateDateColumn, Entity, + Index, JoinColumn, ManyToOne, OneToMany, @@ -20,6 +21,7 @@ export class GroupPermissions extends BaseEntity { @PrimaryGeneratedColumn('uuid') id: string; + @Index() @Column({ name: 'organization_id', nullable: false }) organizationId: string; diff --git a/server/src/entities/group_users.entity.ts b/server/src/entities/group_users.entity.ts index 03ac55386b..29771a5557 100644 --- a/server/src/entities/group_users.entity.ts +++ b/server/src/entities/group_users.entity.ts @@ -3,6 +3,7 @@ import { Column, CreateDateColumn, Entity, + Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn, @@ -16,9 +17,11 @@ export class GroupUsers extends BaseEntity { @PrimaryGeneratedColumn('uuid') id: string; + @Index() @Column({ name: 'user_id', nullable: false }) userId: string; + @Index() @Column({ name: 'group_id', nullable: false }) groupId: string; diff --git a/server/src/entities/page_users.entity.ts b/server/src/entities/page_users.entity.ts index 960be5b32f..ca3ef77c65 100644 --- a/server/src/entities/page_users.entity.ts +++ b/server/src/entities/page_users.entity.ts @@ -1,4 +1,4 @@ -import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn } from 'typeorm'; +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, Index } from 'typeorm'; import { User } from './user.entity'; import { PagePermission } from './page_permissions.entity'; import { GroupPermissions } from './group_permissions.entity'; @@ -8,12 +8,15 @@ export class PageUser { @PrimaryGeneratedColumn('uuid') id: string; + @Index() @Column({ name: 'page_permissions_id', type: 'uuid' }) pagePermissionsId: string; + @Index() @Column({ name: 'user_id', type: 'uuid', nullable: true }) userId: string | null; + @Index() @Column({ name: 'permission_groups_id', type: 'uuid', nullable: true }) permissionGroupsId: string | null;