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;
}
}
}
El primer headless CMS tanto para desarrolladores como para marketers. Pruébalo gratis.
¿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.