Expresiones "Aplicar cuando"
Atlas App Services determina si un rol es aplicable evaluando la expresión 'aplicar cuando' que defines para cada rol.
Esta sección contiene ejemplos de expresiones de "aplicar cuando" para escenarios comunes en los que no se utiliza Device Sync. Para obtener orientación sobre escenarios comunes de Device Sync, consulta la Guía de permisos de Device Sync.
Para agregar una expresión a un rol, busque el escenario que mejor se adapte a su caso de uso y luego copie y pegue la plantilla proporcionada en el rol. Es posible que deba modificar los valores de marcador de posición (indicados por <angle brackets>) en la plantilla para que coincida con su colección o adapte la plantilla para que se ajuste a sus necesidades.
Nota
También puede utilizar las expresiones "aplicar cuando" en esta página para servicios externos.
El usuario es el propietario del documento
Esta expresión se evalúa como true si el valor único id del usuario activo coincide con el valor del campo especificado. El campo "ID de propietario" se refiere a cualquier campo del esquema que represente una relación con un objeto de usuario.
{ "<Owner ID Field>": "%%user.id" }
Un campo de matriz contiene el ID del usuario
Esta expresión se evalúa como true si el valor único id del usuario activo coincide con uno o más valores en el campo de matriz especificado.
{ "<Array Field>": "%%user.id" }
El usuario tiene una dirección de correo electrónico
Esta expresión se evalúa como true si el usuario activo tiene alguna dirección de correo electrónico incluida en su objeto de usuario interno.
{ "%%user.data.email": { "%exists": true } }
El usuario tiene una dirección de correo electrónico específica
Esta expresión se evalúa como true si la dirección de correo electrónico del usuario activo coincide con la dirección de correo electrónico especificada.
{ "%%user.data.email": "<Email Address>" }
Un campo contiene la dirección de correo electrónico del usuario
Esta expresión se evalúa como true si la dirección de correo electrónico del usuario activo coincide con el valor del campo especificado.
{ "%%root.email": "%%user.data.email" }
Un campo de matriz contiene la dirección de correo electrónico del usuario
Esta expresión se evalúa como true si la dirección de correo electrónico del usuario activo coincide con uno o más valores de cadena en el campo de matriz especificado.
{ "<Array Field>": "%%user.data.email" }
Un campo satisface una condición compleja
Esta expresión se evalúa como true si la función isAuthorizedUser devuelve true cuando se le pasa el valor de identificación del usuario activo.
Nota
Puede llamar a cualquier función Atlas desde una expresión JSON utilizando el %function operador.
{ "%%true": { "%function": { "name": "isAuthorizedUser", "arguments": ["%%user.id"] } } }
Permisos CRUD
App Services utiliza la configuración de permisos de un rol para determinar si el usuario activo puede insertar o eliminar un documento, así como qué campos del documento puede leer y escribir.
Esta sección contiene plantillas que definen roles para escenarios comunes. Para aplicar un conjunto de permisos a un rol, busque el escenario que mejor se adapte a su caso de uso. Actualice los permisos de campo, los permisos de documento o la tabla de permisos del rol para que coincidan con la captura de pantalla proporcionada o copie y pegue la plantilla proporcionada en la configuración del modo avanzado de la colección. Asegúrese de modificar los valores de marcador de posición (indicados <angle brackets> por) en la plantilla para que se ajusten a sus necesidades.
El rol puede leer todos los campos pero no puede escribir
Para permitir que un rol lea cualquier campo, configure el campo de nivel de documento read en true y el campo write en false.
![]() | |
El rol puede leer y escribir todos los campos
Para permitir que un rol lea o escriba en cualquier campo, configure el campo write a nivel de documento como true. Las escrituras a nivel de documento requieren permiso de lectura, por lo que el rol podrá leer todos los campos.
![]() | |
El rol puede leer todos los campos y escribir en campos específicos
Para permitir que un rol lea todos los campos, configure el campo read a nivel de documento como true y el campo write como false. Para especificar un campo en el que el rol pueda escribir, configure el campo write como true en el documento de configuración del campo, que está incrustado en el documento fields.
![]() | |
El rol puede leer y escribir todos los campos, pero no puede insertar nuevos documentos.
Para permitir que un rol lea o escriba en cualquier campo, configure el campo write a nivel de documento como true. Las escrituras a nivel de documento requieren permiso de lectura, por lo que el rol podrá leer todos los campos.
Para evitar que el rol inserte nuevos documentos, configure el campo de nivel de documento insert en false.
![]() | |
El rol no puede escribir en campos específicos
Para permitir que un rol escriba en cualquier campo excepto en los que especifique, configure el campo read de nivel de documento como true. Configure los campos write correspondientes a nivel de campo como false y los campos read como true en el documento fields. Por último, configure el campo additional_fields.write como true.
![]() | |
Patrones de roles avanzados
Los casos de uso descritos en esta sección requieren el uso de funciones avanzadas que no son compatibles con el editor de reglas de recopilación predeterminado en la interfaz de usuario de App Services. Para usar esta plantilla, conviértala al modo avanzado o importe una configuración de regla de recopilación con la CLI de App Services.
Roles solo de inserción
Para permitir que un rol inserte nuevos documentos pero evitar que lea o modifique cualquier dato, configure insert en true y establezca el valor de nivel de documento write en una expresión de regla que evalúe true solo si el documento no existía antes de la operación.
{ "name": "insertOnly", "apply_when": <JSON Expression>, "delete": false, "insert": true, "write": { "%%prevRoot": { "%exists": false } }, "additional_fields": {} }
Nota
Debe especificar una expresión JSON para write para evitar que los usuarios lean datos. Para insertar un documento, un rol también debe tener permiso de escritura en todos los campos del documento; sin embargo, si se establece write directamente en true, también se le otorgará permiso de lectura. La expresión JSON garantiza que el rol solo tenga permiso de lectura para la inserción inicial del documento.
Permisos a nivel de campo para documentos incrustados
Para permitir que un rol lea o escriba algunos, pero no todos los campos de un documento incrustado, agregue documentos incrustados que coincidan con la ruta del campo incrustado al documento fields.
{ "name": "canReadEmbeddedField", "apply_when": {}, "delete": true, "insert": true, "fields": { "someEmbeddedDocument": { "fields": { "someEmbeddedField": { "read": true, "write": true } } } }, "additional_fields": {} }
Nota
App Services aplica cualquier permiso read y write definido para un campo determinado a todos los campos integrados que el campo contiene, independientemente de los permisos definidos para esos campos.




