firestore - reglas firebase
Conceder acceso a ubicaciones de Firebase a un grupo de usuarios (1)
No hay soporte explícito para "grupos" en Firebase, porque puede representarlos usted mismo con bastante facilidad. Aquí hay dos opciones, dependiendo de su situación.
Almacenar información de grupo en firebase.
Los siguientes datos podrían usarse para representar 2 grupos (''alfa'' y ''beta'') y 3 piezas de datos protegidos (''thing1'', ''thing2'' y ''thing3'')
{
"groups": {
"alpha": {
"joe": true,
"sally": true
},
"beta": {
"joe": true,
"fred": true
}
},
"data": {
"thing1": {
"group": "alpha"
/* data accessible only by the "alpha" group */
},
"thing2": {
"group": "beta"
/* data accessible only by the "beta" group */
},
"thing3": {
"group": "alpha"
/* more data accessible by the "alpha" group */
}
}
}
Entonces podemos usar las siguientes reglas para hacer cumplir la seguridad:
{
"rules": {
"data": {
"$thing": {
".read": "root.child(''groups'').child(data.child(''group'').val()).hasChild(auth.id)",
".write": "root.child(''groups'').child(data.child(''group'').val()).hasChild(auth.id)"
}
}
}
}
Entonces, si estoy autenticado con {id: ''sally''} como mi objeto de autenticación, tendré acceso a thing1 y thing3, pero no a thing2.
Almacenar información de grupo en el token de autenticación.
Si está generando sus propios tokens de autenticación y sabe en qué grupos se encuentra un usuario en el momento de la autenticación, puede almacenar la lista de grupos en el token de autenticación que genera. Por ejemplo, cuando generas el token de autenticación para el usuario ''fred'', incluye "{id: ''fred'', groups: {alpha: true, beta: true}}"
Y luego puede exigir la membresía grupal con:
{
"rules": {
"data": {
"$thing": {
".read": "auth[data.child(''group'').val()] != null",
".write": "auth[data.child(''group'').val()] != null"
}
}
}
}
No pude encontrarlo en los documentos, pero ¿hay alguna manera de definir un grupo de usuarios y usar ese grupo para otorgar acceso a diferentes ubicaciones, en lugar de otorgar acceso a usuarios individuales?
Saludos, LT