Reglas de seguridad de Firestore

Hasta ahora no nos hemos preocupado por la seguridad de los datos que estamos almacenando, pero tenemos que configurar correctamente las reglas de acceso a nuestra base de datos si no queremos tener problemas. Cada usuario sólo tiene que poder acceder a la información que definamos, y a nada más.

Para conseguirlo vamos a definir reglas de seguridad de Firestore que se aplican automáticamente en cada acceso a la base de datos, creando un mecanismo de protección muy eficaz.

Veamos como:

Perfeccionando el modelo de datos

Mientras empezaba a pensar en cómo aplicar las reglas de seguridad incorporadas de Firestore, me he dado cuenta de que le puedo hacer un cambio interesante al modelo de datos y simplificar el funcionamiento.

Voy a eliminar la colección de usuarios (Firebase ya se encarga de guardar la lista de usuarios y proporcionar el UID del usuario actual) y guardar en cada lista el UID del usuario al que pertenece.

Eso permite que:

  • El modelo sea más simple.
  • Las reglas de seguridad se puedan escribir de modo más efectivo (sólo dejaremos acceder a un documento concreto a su propietario).
  • Si en algún momento nos planteamos compartir listas, sólo habría que añadir los UIDs a esas listas compartidas.

El diagrama actualizado queda así (lo que está en gris desaparece):

Vamos a desarrollarlo:

Nueva lista

Para crear una nueva lista tenemos que completar varias tareas:

  • Crear un segue de tipo unwind para retornar los datos al ViewController principal.
  • Extraer el valor del formulario de Eureka.
  • Actualizar nuestro TableView.
  • Guardar los datos en Firestore.

Vamos a aprovechar para empezar a usar las capacidades de actualización en tiempo real de Firestore, lo que nos va a dar muchas posibilidades interesantes.