[permissions] Add field permissions feature flag in lab (#13767)

- Add field permissions feature flag in lab
- Fix / configuration of field permissions on roles page should be
behind feature flag (@lucasbordeau )
This commit is contained in:
Marie
2025-08-08 15:42:50 +02:00
committed by GitHub
parent 84df53467b
commit 2932439689
9 changed files with 111 additions and 26 deletions
@@ -30,6 +30,15 @@ export const PUBLIC_FEATURE_FLAGS: PublicFeatureFlag[] = [
imagePath: '',
},
},
{
key: FeatureFlagKey.IS_FIELDS_PERMISSIONS_ENABLED,
metadata: {
label: 'Fields Permissions',
description: 'Configure permissions at field-level for your workspace',
imagePath:
'https://twenty.com/images/lab/is-fields-permissions-enabled.png',
},
},
...(process.env.CLOUDFLARE_API_KEY
? [
// {
@@ -6,7 +6,7 @@ import { Repository } from 'typeorm';
import { type FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface';
import { type FeatureFlagDTO } from 'src/engine/core-modules/feature-flag/dtos/feature-flag-dto';
import { type FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlag } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import {
FeatureFlagException,
@@ -15,6 +15,7 @@ import {
import { featureFlagValidator } from 'src/engine/core-modules/feature-flag/validates/feature-flag.validate';
import { publicFeatureFlagValidator } from 'src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate';
import { WorkspaceFeatureFlagsMapCacheService } from 'src/engine/metadata-modules/workspace-feature-flags-map-cache/workspace-feature-flags-map-cache.service';
import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service';
@Injectable()
export class FeatureFlagService {
@@ -22,6 +23,7 @@ export class FeatureFlagService {
@InjectRepository(FeatureFlag, 'core')
private readonly featureFlagRepository: Repository<FeatureFlag>,
private readonly workspaceFeatureFlagsMapCacheService: WorkspaceFeatureFlagsMapCacheService,
private readonly workspacePermissionsCacheService: WorkspacePermissionsCacheService,
) {}
public async isFeatureEnabled(
@@ -130,6 +132,14 @@ export class FeatureFlagService {
{ workspaceId },
);
if (featureFlag === FeatureFlagKey.IS_FIELDS_PERMISSIONS_ENABLED) {
await this.workspacePermissionsCacheService.recomputeRolesPermissionsCache(
{
workspaceId,
},
);
}
return result;
}
}