defineApplicationRole() (consulta El rol de función predeterminado más abajo).
src/roles/restricted-company-role.ts
Seguridad a nivel de fila
Los permisos de objetos y campos determinan a qué objetos y campos puede acceder o modificar un rol. Los predicados de permisos a nivel de fila van más allá y deciden qué registros puede ver y sobre los que puede actuar un rol; por ejemplo, un rol de autoservicio en el que cada usuario externo ve solo sus propios registros. Declara los predicados conrowLevelPermissionPredicates en el rol. Como el resto del manifiesto, cada predicado tiene su propio universalIdentifier y hace referencia a un objeto y a un campo mediante su universalIdentifier, a un operand y, de forma opcional, a un campo workspaceMember cuyo valor se inyecta en tiempo de consulta, de modo que puedas expresar: “la relación de propietario del registro es el miembro actual del espacio de trabajo”:
src/roles/partner-role.ts
Combinar predicados con grupos
De forma predeterminada, los predicados de un rol se combinan conAND. Para combinar algunos de ellos con OR (o para anidar lógica), declara una entrada rowLevelPermissionPredicateGroups y haz que cada predicado apunte a ella mediante predicateGroupUniversalIdentifier. Este rol permite que un socio vea una Oportunidad de la que es propietario o de la que es el punto de contacto:
src/roles/partner-opportunities-role.ts
- Asigna a cada predicado y grupo un
universalIdentifierestable (cualquier uuid): sirve como clave de la entidad a través de las actualizaciones, y los predicados hacen referencia a los grupos mediante él. - Los predicados pueden hacer referencia a objetos y campos que sean propiedad de tu aplicación o de los objetos estándar de Twenty.
- La seguridad a nivel de fila se aplica para los espacios de trabajo en planes que la incluyen; los predicados siguen sincronizándose en otros planes, simplemente no se aplican.
El rol de función predeterminado
Cuando generas una nueva aplicación, la CLI crea un archivo de rol predeterminado declarado condefineApplicationRole():
src/roles/default-role.ts
defineApplicationRole() es una envoltura ligera alrededor de defineRole() que marca el rol utilizado como predeterminado de tu aplicación en el momento de la instalación. La validación es idéntica a defineRole, pero la canalización de compilación conecta automáticamente su universalIdentifier con defaultRoleUniversalIdentifier del manifiesto de la aplicación, por lo que no necesitas hacer referencia a él desde defineApplication.
Notas:
- Se permite exactamente una llamada a
defineApplicationRole(...)por aplicación; la compilación del manifiesto fallará si encuentra más de una. - Usa
defineRole()(nodefineApplicationRole()) para cualquier rol adicional que distribuya tu aplicación. - Configurar
defaultRoleUniversalIdentifierexplícitamente endefineApplication()sigue siendo compatible por motivos de retrocompatibilidad, pero está en desuso en favor dedefineApplicationRole().
Mejores prácticas
- Parte del rol generado automáticamente y luego restríngeelo progresivamente; el valor predeterminado concede un acceso amplio de lectura, lo cual rara vez es lo que quieres en producción.
- Reemplaza
objectPermissionsyfieldPermissionscon los objetos y campos que realmente necesitan tus funciones. permissionFlagUniversalIdentifierscontrola el acceso a capacidades a nivel de plataforma. Manténlos al mínimo.- Consulta un ejemplo funcional:
hello-world/src/roles/function-role.ts.