Migrate permission flag to syncable entity (#18567)

Closes [#2225](https://github.com/twentyhq/core-team-issues/issues/2225)
This commit is contained in:
Abdul Rahman
2026-03-18 18:55:52 +05:30
committed by GitHub
parent 58336fb70f
commit c7e89a18f0
69 changed files with 1821 additions and 163 deletions
@@ -178,6 +178,13 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"overrides",
],
},
"permissionFlag": {
"propertiesToCompare": [
"flag",
"roleUniversalIdentifier",
],
"propertiesToStringify": [],
},
"role": {
"propertiesToCompare": [
"label",
@@ -1134,6 +1134,28 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
universalProperty: 'targetObjectMetadataUniversalIdentifier',
},
},
permissionFlag: {
flag: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
roleId: {
toCompare: true,
toStringify: false,
universalProperty: 'roleUniversalIdentifier',
},
createdAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
updatedAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
},
rowLevelPermissionPredicate: {
fieldMetadataId: {
toCompare: true,
@@ -163,6 +163,13 @@ export const ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY = {
workspace: null,
application: null,
},
permissionFlag: {
workspace: null,
application: null,
role: {
foreignKey: 'roleId',
},
},
pageLayout: {
workspace: null,
objectMetadata: {
@@ -280,6 +280,17 @@ export const ALL_MANY_TO_ONE_METADATA_RELATIONS = {
workspace: null,
application: null,
},
permissionFlag: {
workspace: null,
application: null,
role: {
metadataName: 'role',
foreignKey: 'roleId',
inverseOneToManyProperty: 'permissionFlags',
isNullable: false,
universalForeignKey: 'roleUniversalIdentifier',
},
},
pageLayout: {
workspace: null,
objectMetadata: {
@@ -12,6 +12,7 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat
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';
import { PermissionFlagEntity } from 'src/engine/metadata-modules/permission-flag/permission-flag.entity';
import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity';
import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity';
import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
@@ -49,6 +50,7 @@ export const ALL_METADATA_ENTITY_BY_METADATA_NAME = {
agent: AgentEntity,
commandMenuItem: CommandMenuItemEntity,
navigationMenuItem: NavigationMenuItemEntity,
permissionFlag: PermissionFlagEntity,
webhook: WebhookEntity,
viewSort: ViewSortEntity,
} as const satisfies Record<AllMetadataName, EntityTarget<ObjectLiteral>>;
@@ -74,6 +74,9 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = {
objectMetadata: true,
view: true,
},
permissionFlag: {
role: true,
},
pageLayout: {
objectMetadata: true,
pageLayoutTab: true,
@@ -33,6 +33,7 @@ export const ALL_METADATA_SERIALIZED_RELATION = {
logicFunction: {},
role: {},
roleTarget: {},
permissionFlag: {},
pageLayout: {},
pageLayoutTab: {},
pageLayoutWidget: {
@@ -145,7 +145,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
universalFlatEntityForeignKeyAggregator: 'roleTargetUniversalIdentifiers',
},
objectPermissions: null,
permissionFlags: null,
permissionFlags: {
metadataName: 'permissionFlag',
flatEntityForeignKeyAggregator: 'permissionFlagIds',
universalFlatEntityForeignKeyAggregator:
'permissionFlagUniversalIdentifiers',
},
fieldPermissions: null,
rowLevelPermissionPredicates: {
metadataName: 'rowLevelPermissionPredicate',
@@ -161,6 +166,7 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
},
},
roleTarget: {},
permissionFlag: {},
pageLayout: {
tabs: {
metadataName: 'pageLayoutTab',