Migrate object permission to syncable entity (#18609)

Closes [#2223](https://github.com/twentyhq/core-team-issues/issues/2223)
This commit is contained in:
Abdul Rahman
2026-03-18 22:02:18 +05:30
committed by GitHub
parent 8ccaf635bc
commit 6d4d1a97bc
86 changed files with 2475 additions and 424 deletions
@@ -136,6 +136,17 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"standardOverrides",
],
},
"objectPermission": {
"propertiesToCompare": [
"roleUniversalIdentifier",
"objectMetadataUniversalIdentifier",
"canReadObjectRecords",
"canUpdateObjectRecords",
"canSoftDeleteObjectRecords",
"canDestroyObjectRecords",
],
"propertiesToStringify": [],
},
"pageLayout": {
"propertiesToCompare": [
"name",
@@ -1156,6 +1156,48 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
universalProperty: undefined,
},
},
objectPermission: {
roleId: {
toCompare: true,
toStringify: false,
universalProperty: 'roleUniversalIdentifier',
},
objectMetadataId: {
toCompare: true,
toStringify: false,
universalProperty: 'objectMetadataUniversalIdentifier',
},
canReadObjectRecords: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
canUpdateObjectRecords: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
canSoftDeleteObjectRecords: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
canDestroyObjectRecords: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
createdAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
updatedAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
},
rowLevelPermissionPredicate: {
fieldMetadataId: {
toCompare: true,
@@ -170,6 +170,16 @@ export const ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY = {
foreignKey: 'roleId',
},
},
objectPermission: {
workspace: null,
application: null,
role: {
foreignKey: 'roleId',
},
objectMetadata: {
foreignKey: 'objectMetadataId',
},
},
pageLayout: {
workspace: null,
objectMetadata: {
@@ -291,6 +291,24 @@ export const ALL_MANY_TO_ONE_METADATA_RELATIONS = {
universalForeignKey: 'roleUniversalIdentifier',
},
},
objectPermission: {
workspace: null,
application: null,
role: {
metadataName: 'role',
foreignKey: 'roleId',
inverseOneToManyProperty: 'objectPermissions',
isNullable: false,
universalForeignKey: 'roleUniversalIdentifier',
},
objectMetadata: {
metadataName: 'objectMetadata',
foreignKey: 'objectMetadataId',
inverseOneToManyProperty: 'objectPermissions',
isNullable: false,
universalForeignKey: 'objectMetadataUniversalIdentifier',
},
},
pageLayout: {
workspace: null,
objectMetadata: {
@@ -9,6 +9,7 @@ import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/
import { WebhookEntity } from 'src/engine/metadata-modules/webhook/entities/webhook.entity';
import { NavigationMenuItemEntity } from 'src/engine/metadata-modules/navigation-menu-item/entities/navigation-menu-item.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectPermissionEntity } from 'src/engine/metadata-modules/object-permission/object-permission.entity';
import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity';
import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
@@ -46,6 +47,7 @@ export const ALL_METADATA_ENTITY_BY_METADATA_NAME = {
skill: SkillEntity,
logicFunction: LogicFunctionEntity,
objectMetadata: ObjectMetadataEntity,
objectPermission: ObjectPermissionEntity,
role: RoleEntity,
agent: AgentEntity,
commandMenuItem: CommandMenuItemEntity,
@@ -77,6 +77,10 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = {
permissionFlag: {
role: true,
},
objectPermission: {
role: true,
objectMetadata: true,
},
pageLayout: {
objectMetadata: true,
pageLayoutTab: true,
@@ -34,6 +34,7 @@ export const ALL_METADATA_SERIALIZED_RELATION = {
role: {},
roleTarget: {},
permissionFlag: {},
objectPermission: {},
pageLayout: {},
pageLayoutTab: {},
pageLayoutWidget: {
@@ -85,7 +85,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
universalFlatEntityForeignKeyAggregator:
'indexMetadataUniversalIdentifiers',
},
objectPermissions: null,
objectPermissions: {
metadataName: 'objectPermission',
flatEntityForeignKeyAggregator: 'objectPermissionIds',
universalFlatEntityForeignKeyAggregator:
'objectPermissionUniversalIdentifiers',
},
fieldPermissions: null,
views: {
metadataName: 'view',
@@ -144,7 +149,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
flatEntityForeignKeyAggregator: 'roleTargetIds',
universalFlatEntityForeignKeyAggregator: 'roleTargetUniversalIdentifiers',
},
objectPermissions: null,
objectPermissions: {
metadataName: 'objectPermission',
flatEntityForeignKeyAggregator: 'objectPermissionIds',
universalFlatEntityForeignKeyAggregator:
'objectPermissionUniversalIdentifiers',
},
permissionFlags: {
metadataName: 'permissionFlag',
flatEntityForeignKeyAggregator: 'permissionFlagIds',
@@ -167,6 +177,7 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
},
roleTarget: {},
permissionFlag: {},
objectPermission: {},
pageLayout: {
tabs: {
metadataName: 'pageLayoutTab',