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
@@ -11,10 +11,10 @@ import { FeatureFlagKey } from 'twenty-shared/types';
import { MetadataResolver } from 'src/engine/api/graphql/graphql-config/decorators/metadata-resolver.decorator';
import { ApplicationExceptionFilter } from 'src/engine/core-modules/application/application-exception-filter';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import { ApplicationSyncService } from 'src/engine/core-modules/application/application-manifest/application-sync.service';
import { RunWorkspaceMigrationInput } from 'src/engine/core-modules/application/application-manifest/dtos/run-workspace-migration.input';
import { UninstallApplicationInput } from 'src/engine/core-modules/application/application-manifest/dtos/uninstall-application.input';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import { AuthGraphqlApiExceptionFilter } from 'src/engine/core-modules/auth/filters/auth-graphql-api-exception.filter';
import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe';
import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
@@ -25,6 +25,7 @@ import {
} from 'src/engine/guards/feature-flag.guard';
import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard';
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
import { AllUniversalWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common';
import { WorkspaceMigrationGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-graphql-api-exception.interceptor';
import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service';
@@ -56,7 +57,7 @@ export class ApplicationManifestResolver {
await this.workspaceMigrationRunnerService.run({
workspaceMigration: {
actions,
actions: actions as AllUniversalWorkspaceMigrationAction[],
applicationUniversalIdentifier:
workspaceCustomFlatApplication.universalIdentifier,
},
@@ -35,6 +35,7 @@ export const fromObjectManifestToUniversalFlatObjectMetadata = ({
isLabelSyncedWithName: false,
fieldUniversalIdentifiers: [],
indexMetadataUniversalIdentifiers: [],
objectPermissionUniversalIdentifiers: [],
viewUniversalIdentifiers: [],
labelIdentifierFieldMetadataUniversalIdentifier:
objectManifest.labelIdentifierFieldMetadataUniversalIdentifier,
@@ -30,6 +30,7 @@ export const fromRoleManifestToUniversalFlatRole = ({
canBeAssignedToAgents: roleManifest.canBeAssignedToAgents ?? true,
canBeAssignedToApiKeys: roleManifest.canBeAssignedToApiKeys ?? true,
roleTargetUniversalIdentifiers: [],
objectPermissionUniversalIdentifiers: [],
permissionFlagUniversalIdentifiers: [],
rowLevelPermissionPredicateUniversalIdentifiers: [],
rowLevelPermissionPredicateGroupUniversalIdentifiers: [],
@@ -21,6 +21,7 @@ const mockObjectMetadata: FlatObjectMetadata = {
isAuditLogged: true,
isSearchable: true,
indexMetadataIds: [],
objectPermissionIds: [],
fieldIds: [],
viewIds: [],
applicationId: 'test-application-id',
@@ -36,6 +37,7 @@ const mockObjectMetadata: FlatObjectMetadata = {
duplicateCriteria: null,
applicationUniversalIdentifier: 'test-application-id',
fieldUniversalIdentifiers: [],
objectPermissionUniversalIdentifiers: [],
viewUniversalIdentifiers: [],
indexMetadataUniversalIdentifiers: [],
labelIdentifierFieldMetadataUniversalIdentifier: null,