Implementar reglas de seguridad Firebase
Presentación
Firebase Auth
Cloud Firestore
Cloud Storage
Cloud Functions
Curso Firebase para Web se encuentra en desarrollo. Vuelve pronto para encontrar nuevas lecciones.
- Antes de comenzar hemos de actualizar
rooms.js
yRoomsView.vue
para solucionar un error a la hora de procesar el orden de nuestra colecciónrooms
.
// rooms.js
roomsByDate: state => {
return state.rooms.sort(function(a, b) {
return new Date(b.createdAt) - new Date(a.createdAt);
});
}
createRoom(state, { roomData, id }) {
...
state.rooms.push(roomData);
},
// RoomsView.vue
<RoomsComponent
:unread-messages="unreadMessages"
:rooms="$store.getters['rooms/roomsByDate']"
/>
- Ahora podemos poner en practica lo aprendido en la lección anterior y componer nuestras reglas de seguridad.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
match /rooms/{roomID} {
allow read, create: if request.auth != null;
allow update, delete: if request.auth.uid == resource.data.adminUid;
}
match /{path=**}/messages/{messageID} {
// Leer si estás autentificado
allow read: if request.auth != null;
// Escribir si estás dentro de la sala
allow create: if request.resource.data.roomId in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.connected;
// Actualizar (modificamos perfil) si los mensajes son del usuario
allow update: if resource.data.userId == request.auth.uid;
// Eliminar si eres el admin
allow delete: if get(/databases/$(database)/documents/rooms/$(resource.data.roomId)).data.adminUid == request.auth.uid;
}
match /users/{userID} {
allow read, write: if request.auth.uid == userID;
}
}
}
Código inicial 
¿Tienes alguna pregunta sobre esta lección de Curso Firebase para Web?
Resuelve todas tus dudas sobre Firebase en la Comunidad de Escuela Vue: un lugar donde participar, aprender y ayudar. ¡Te esperamos!.
Tras el registro (si no lo has hecho ya) serás redirigido/a al canal adecuado en la Comunidad.