Migrate field permission to syncable entity (#18751)

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Abdul Rahman
2026-03-27 19:17:27 +05:30
committed by GitHub
parent c2b058a6a7
commit 5efe69f8d3
105 changed files with 2956 additions and 490 deletions
@@ -58,6 +58,16 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"universalSettings",
],
},
"fieldPermission": {
"propertiesToCompare": [
"roleUniversalIdentifier",
"objectMetadataUniversalIdentifier",
"fieldMetadataUniversalIdentifier",
"canReadFieldValue",
"canUpdateFieldValue",
],
"propertiesToStringify": [],
},
"frontComponent": {
"propertiesToCompare": [
"name",
@@ -1156,6 +1156,43 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
universalProperty: undefined,
},
},
fieldPermission: {
roleId: {
toCompare: true,
toStringify: false,
universalProperty: 'roleUniversalIdentifier',
},
objectMetadataId: {
toCompare: true,
toStringify: false,
universalProperty: 'objectMetadataUniversalIdentifier',
},
fieldMetadataId: {
toCompare: true,
toStringify: false,
universalProperty: 'fieldMetadataUniversalIdentifier',
},
canReadFieldValue: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
canUpdateFieldValue: {
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
createdAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
updatedAt: {
toCompare: false,
toStringify: false,
universalProperty: undefined,
},
},
objectPermission: {
roleId: {
toCompare: true,
@@ -180,6 +180,19 @@ export const ALL_MANY_TO_ONE_METADATA_FOREIGN_KEY = {
foreignKey: 'objectMetadataId',
},
},
fieldPermission: {
workspace: null,
application: null,
role: {
foreignKey: 'roleId',
},
objectMetadata: {
foreignKey: 'objectMetadataId',
},
fieldMetadata: {
foreignKey: 'fieldMetadataId',
},
},
pageLayout: {
workspace: null,
objectMetadata: {
@@ -309,6 +309,31 @@ export const ALL_MANY_TO_ONE_METADATA_RELATIONS = {
universalForeignKey: 'objectMetadataUniversalIdentifier',
},
},
fieldPermission: {
workspace: null,
application: null,
role: {
metadataName: 'role',
foreignKey: 'roleId',
inverseOneToManyProperty: 'fieldPermissions',
isNullable: false,
universalForeignKey: 'roleUniversalIdentifier',
},
objectMetadata: {
metadataName: 'objectMetadata',
foreignKey: 'objectMetadataId',
inverseOneToManyProperty: 'fieldPermissions',
isNullable: false,
universalForeignKey: 'objectMetadataUniversalIdentifier',
},
fieldMetadata: {
metadataName: 'fieldMetadata',
foreignKey: 'fieldMetadataId',
inverseOneToManyProperty: 'fieldPermissions',
isNullable: false,
universalForeignKey: 'fieldMetadataUniversalIdentifier',
},
},
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 { FieldPermissionEntity } from 'src/engine/metadata-modules/object-permission/field-permission/field-permission.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';
@@ -48,6 +49,7 @@ export const ALL_METADATA_ENTITY_BY_METADATA_NAME = {
logicFunction: LogicFunctionEntity,
objectMetadata: ObjectMetadataEntity,
objectPermission: ObjectPermissionEntity,
fieldPermission: FieldPermissionEntity,
role: RoleEntity,
agent: AgentEntity,
commandMenuItem: CommandMenuItemEntity,
@@ -81,6 +81,11 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = {
role: true,
objectMetadata: true,
},
fieldPermission: {
role: true,
objectMetadata: true,
fieldMetadata: true,
},
pageLayout: {
objectMetadata: true,
pageLayoutTab: true,
@@ -35,6 +35,7 @@ export const ALL_METADATA_SERIALIZED_RELATION = {
roleTarget: {},
permissionFlag: {},
objectPermission: {},
fieldPermission: {},
pageLayout: {},
pageLayoutTab: {},
pageLayoutWidget: {
@@ -42,7 +42,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
metadataName: 'viewSort',
universalFlatEntityForeignKeyAggregator: 'viewSortUniversalIdentifiers',
},
fieldPermissions: null,
fieldPermissions: {
metadataName: 'fieldPermission',
flatEntityForeignKeyAggregator: 'fieldPermissionIds',
universalFlatEntityForeignKeyAggregator:
'fieldPermissionUniversalIdentifiers',
},
indexFieldMetadatas: null,
viewFields: {
metadataName: 'viewField',
@@ -91,7 +96,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
universalFlatEntityForeignKeyAggregator:
'objectPermissionUniversalIdentifiers',
},
fieldPermissions: null,
fieldPermissions: {
metadataName: 'fieldPermission',
flatEntityForeignKeyAggregator: 'fieldPermissionIds',
universalFlatEntityForeignKeyAggregator:
'fieldPermissionUniversalIdentifiers',
},
views: {
metadataName: 'view',
flatEntityForeignKeyAggregator: 'viewIds',
@@ -161,7 +171,12 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
universalFlatEntityForeignKeyAggregator:
'permissionFlagUniversalIdentifiers',
},
fieldPermissions: null,
fieldPermissions: {
metadataName: 'fieldPermission',
flatEntityForeignKeyAggregator: 'fieldPermissionIds',
universalFlatEntityForeignKeyAggregator:
'fieldPermissionUniversalIdentifiers',
},
rowLevelPermissionPredicates: {
metadataName: 'rowLevelPermissionPredicate',
flatEntityForeignKeyAggregator: 'rowLevelPermissionPredicateIds',
@@ -178,6 +193,7 @@ export const ALL_ONE_TO_MANY_METADATA_RELATIONS = {
roleTarget: {},
permissionFlag: {},
objectPermission: {},
fieldPermission: {},
pageLayout: {
tabs: {
metadataName: 'pageLayoutTab',