[permissions] QA fixes (#13698)

In this PR

- Introduction of readableFields and updatableFields in
objectMetadataItem selector to ease filtering from a developer
experience perspective ( + to help developers think to do it). In
discussion @lucasbordeau @charlesBochet
- Remove non-updatable field from CSV import process (@etiennejouan)
- QA fix / Non-readable fields should not show on show page
- QA fix / It should not be offered to create a kanban view on a
non-readable field
- QA fix / It should not be offered to create view groups on a
non-readable field
- QA fix / Rating field should have a readonly mode

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Marie
2025-08-07 18:21:59 +02:00
committed by GitHub
parent 258f21a4be
commit ee19ee5119
120 changed files with 1211 additions and 943 deletions
@@ -16,6 +16,8 @@ describe('generateAggregateQuery', () => {
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
fields: [],
readableFields: [],
updatableFields: [],
indexMetadatas: [],
isLabelSyncedWithName: true,
isRemote: false,
@@ -55,6 +57,8 @@ describe('generateAggregateQuery', () => {
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
fields: [],
readableFields: [],
updatableFields: [],
indexMetadatas: [],
isLabelSyncedWithName: true,
isRemote: false,
@@ -3,8 +3,8 @@ import gql from 'graphql-tag';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
import { RecordGqlOperationGqlRecordFields } from '@/object-record/graphql/types/RecordGqlOperationGqlRecordFields';
import { ObjectPermissions } from 'twenty-shared/types';
import { capitalize } from 'twenty-shared/utils';
import { ObjectPermission } from '~/generated/graphql';
export type QueryCursorDirection = 'before' | 'after';
@@ -22,7 +22,10 @@ export const generateFindManyRecordsQuery = ({
recordGqlFields?: RecordGqlOperationGqlRecordFields;
computeReferences?: boolean;
cursorDirection?: QueryCursorDirection;
objectPermissionsByObjectMetadataId: Record<string, ObjectPermission>;
objectPermissionsByObjectMetadataId: Record<
string,
ObjectPermissions & { objectMetadataId: string }
>;
isFieldsPermissionsEnabled?: boolean;
}) => gql`
query FindMany${capitalize(