Closes https://github.com/twentyhq/core-team-issues/issues/526 (for reminder: 1. Make defaultRoleId non-nullable for an active workspace 2. Remove permissions V1 feature flag 3. Set member role as default role for new workspaces About 1.: An active workspace's defaultRoleId should never be null. We can't rely on a simple postgres NOT NULL constraint as defaultRoleId will always be initially null when the workspace is first created since the roles do not exist at that time. Let's add a more complex rule to ensure that About 3.: In the first phase of our deploy of permissions, we chose to assign admin role to all existing users, not to break any existing behavior with the introduction of the feature (= existing users have less rights than before). As we deploy permissions to all existing and future workspaces, let's set the member role as default role for future workspaces. )
24 lines
774 B
TypeScript
24 lines
774 B
TypeScript
import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceState';
|
|
import { useRecoilValue } from 'recoil';
|
|
import { PermissionsOnAllObjectRecords } from 'twenty-shared/constants';
|
|
import { isDefined } from 'twenty-shared/utils';
|
|
|
|
export const useHasObjectReadOnlyPermission = () => {
|
|
const currentUserWorkspace = useRecoilValue(currentUserWorkspaceState);
|
|
|
|
if (!isDefined(currentUserWorkspace?.objectRecordsPermissions)) {
|
|
return false;
|
|
}
|
|
|
|
if (currentUserWorkspace?.objectRecordsPermissions.length === 0) {
|
|
return true;
|
|
}
|
|
|
|
return (
|
|
currentUserWorkspace?.objectRecordsPermissions.length === 1 &&
|
|
currentUserWorkspace?.objectRecordsPermissions.includes(
|
|
PermissionsOnAllObjectRecords.READ_ALL_OBJECT_RECORDS,
|
|
)
|
|
);
|
|
};
|