Identify standard role (#17234)

# Introduction
Related to https://github.com/twentyhq/core-team-issues/issues/1989

1/ Migration, applicationId and universalIdentifier are required on
entity ( save point migration + upgrade command fallback pattern )
2/ Backfill using previous standard ids

## Test
tested prod extract

## Note
Added build to typeorm nx generate migration command so we never forgot
to build server before
This commit is contained in:
Paul Rastoin
2026-01-19 16:04:33 +01:00
committed by GitHub
parent 905898d109
commit 59c7295033
9 changed files with 345 additions and 5 deletions
@@ -15,7 +15,6 @@ export const ADMIN_ROLE = {
canBeAssignedToUsers: true,
canBeAssignedToAgents: false,
canBeAssignedToApiKeys: true,
applicationId: null, // TODO: Replace with Twenty application ID
} as const satisfies Pick<
FlatRole,
| 'standardId'
@@ -32,5 +31,4 @@ export const ADMIN_ROLE = {
| 'canBeAssignedToUsers'
| 'canBeAssignedToAgents'
| 'canBeAssignedToApiKeys'
| 'applicationId'
>;
@@ -15,11 +15,14 @@ import { PermissionFlagEntity } from 'src/engine/metadata-modules/permission-fla
import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity';
import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity';
import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface';
import { SyncableEntityRequired } from 'src/engine/workspace-manager/types/syncable-entity-required.interface';
@Entity('role')
@Unique('IDX_ROLE_LABEL_WORKSPACE_ID_UNIQUE', ['label', 'workspaceId'])
export class RoleEntity extends SyncableEntity implements Required<RoleEntity> {
export class RoleEntity
extends SyncableEntityRequired
implements Required<RoleEntity>
{
@PrimaryGeneratedColumn('uuid')
id: string;