Docs Menu
Docs Home
/ /
Definir permisos de acceso a datos

Ejemplos de roles de acceso a datos

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.

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"
}

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"
}

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 }
}

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>"
}

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"
}

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"
}

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"]
}
}
}

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.

Para permitir que un rol lea cualquier campo, configure el campo de nivel de documento read en true y el campo write en false.

Un rol con permiso para leer todos los campos del documento
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"write": false
}

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.

Un rol con permiso para leer y escribir todos los campos del documento.
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"write": true,
}

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.

Un rol con permiso para escribir en campos específicos
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"write": false,
"fields": {
"<Field Name>": { "write": true },
...
}
}

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.

Un rol que no tiene permiso para insertar nuevos documentos
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": false,
"delete": <boolean>,
"write": true,
}

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.

Un rol con permiso para escribir en algunos campos, pero no en todos.
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"fields": {
"<Field Name>": {
"read": true,
"write": false
},
...
},
"additional_fields": { "write": true }
}

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.

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.

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.

Volver

Configurar reglas avanzadas