[permissions] Deprecate ObjectsPermissionsDeprecated (2/3) (#14450)

Following https://github.com/twentyhq/twenty/pull/14306 , working on the
deprecation of objectRecordsPermissions + renaming of objectPermissions
-> objectsPermissions

In this PR
- Removal of objectRecordsPermissions (was not used in the FE any
longer)
- Addition of objectsPermissions, same as objectPermission but renamed.
objectPermission is no longer used in the FE.

Next step
- Remove unused objectPermissions
This commit is contained in:
Marie
2025-09-12 16:02:42 +02:00
committed by GitHub
parent 5b9cda3341
commit 3270c64a96
16 changed files with 34 additions and 95 deletions
@@ -1,7 +1,6 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { PermissionsOnAllObjectRecords } from 'twenty-shared/constants';
import { isDefined } from 'twenty-shared/utils';
import { Repository } from 'typeorm';
@@ -82,37 +81,16 @@ export class PermissionsService {
workspaceId,
});
const objectPermissions = rolesPermissions[roleOfUserWorkspace.id] ?? {};
const objectsPermissions = rolesPermissions[roleOfUserWorkspace.id] ?? {};
const objectRecordsPermissions: UserWorkspacePermissions['objectRecordsPermissions'] =
{
[PermissionsOnAllObjectRecords.READ_ALL_OBJECT_RECORDS]:
roleOfUserWorkspace.canReadAllObjectRecords ?? false,
[PermissionsOnAllObjectRecords.UPDATE_ALL_OBJECT_RECORDS]:
roleOfUserWorkspace.canUpdateAllObjectRecords ?? false,
[PermissionsOnAllObjectRecords.SOFT_DELETE_ALL_OBJECT_RECORDS]:
roleOfUserWorkspace.canSoftDeleteAllObjectRecords ?? false,
[PermissionsOnAllObjectRecords.DESTROY_ALL_OBJECT_RECORDS]:
roleOfUserWorkspace.canDestroyAllObjectRecords ?? false,
};
return {
permissionFlags,
objectRecordsPermissions,
objectPermissions,
objectsPermissions,
};
}
public getDefaultUserWorkspacePermissions = () =>
({
objectRecordsPermissions: {
[PermissionsOnAllObjectRecords.READ_ALL_OBJECT_RECORDS]: false,
[PermissionsOnAllObjectRecords.UPDATE_ALL_OBJECT_RECORDS]: false,
[PermissionsOnAllObjectRecords.SOFT_DELETE_ALL_OBJECT_RECORDS]: false,
[PermissionsOnAllObjectRecords.DESTROY_ALL_OBJECT_RECORDS]: false,
},
permissionFlags: {
[PermissionFlagType.API_KEYS_AND_WEBHOOKS]: false,
[PermissionFlagType.WORKSPACE]: false,
@@ -126,7 +104,6 @@ export class PermissionsService {
[PermissionFlagType.IMPORT_CSV]: false,
[PermissionFlagType.EXPORT_CSV]: false,
},
objectPermissions: {},
objectsPermissions: {},
}) as const satisfies UserWorkspacePermissions;
@@ -1,14 +1,8 @@
import { type PermissionsOnAllObjectRecords } from 'twenty-shared/constants';
import {
type ObjectsPermissions,
type ObjectsPermissionsDeprecated,
} from 'twenty-shared/types';
import { type ObjectsPermissions } from 'twenty-shared/types';
import { type PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants';
export type UserWorkspacePermissions = {
permissionFlags: Record<PermissionFlagType, boolean>;
objectRecordsPermissions: Record<PermissionsOnAllObjectRecords, boolean>;
objectPermissions: ObjectsPermissionsDeprecated;
objectsPermissions: ObjectsPermissions; // replaces ObjectsPermissionsDeprecated - deprecation ongoing
objectsPermissions: ObjectsPermissions;
};
@@ -2,5 +2,5 @@ import { type UserWorkspace } from 'src/engine/core-modules/user-workspace/user-
export type UserWorkspacePermissionsDto = Pick<
UserWorkspace,
'objectPermissions' | 'permissionFlags' | 'objectRecordsPermissions'
'objectPermissions' | 'permissionFlags' | 'objectsPermissions'
>;
@@ -1,36 +1,31 @@
import { type PermissionsOnAllObjectRecords } from 'twenty-shared/constants';
import { type PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants';
import { type UserWorkspacePermissions } from 'src/engine/metadata-modules/permissions/types/user-workspace-permissions';
import { type UserWorkspacePermissionsDto } from 'src/engine/metadata-modules/role/dtos/user-workspace-permissions.dto';
export const fromUserWorkspacePermissionsToUserWorkspacePermissionsDto = ({
objectPermissions: rawObjectPermissions,
objectRecordsPermissions: rawObjectRecordsPermissions,
objectsPermissions: rawObjectsPermissions,
permissionFlags: rawSettingsPermissions,
}: UserWorkspacePermissions): UserWorkspacePermissionsDto => {
const objectPermissions = Object.entries(rawObjectPermissions).map(
const objectPermissions = Object.entries(rawObjectsPermissions).map(
([objectMetadataId, permissions]) => ({
objectMetadataId,
canReadObjectRecords: permissions.canRead,
canUpdateObjectRecords: permissions.canUpdate,
canSoftDeleteObjectRecords: permissions.canSoftDelete,
canDestroyObjectRecords: permissions.canDestroy,
canReadObjectRecords: permissions.canReadObjectRecords,
canUpdateObjectRecords: permissions.canUpdateObjectRecords,
canSoftDeleteObjectRecords: permissions.canSoftDeleteObjectRecords,
canDestroyObjectRecords: permissions.canDestroyObjectRecords,
restrictedFields: permissions.restrictedFields,
}),
);
const objectsPermissions = objectPermissions;
const permissionFlags = (
Object.keys(rawSettingsPermissions) as PermissionFlagType[]
).filter((feature) => rawSettingsPermissions[feature] === true);
const objectRecordsPermissions = (
Object.keys(rawObjectRecordsPermissions) as PermissionsOnAllObjectRecords[]
).filter((feature) => rawObjectRecordsPermissions[feature] === true);
return {
objectPermissions,
objectRecordsPermissions,
objectsPermissions,
permissionFlags,
};
};