🔒 Secure Firestore Rules for Statuses - #17
Conversation
…unction - Update `firestore.rules` to restrict create, update, and delete operations on the `statuses` collection to the document owner. - Implement a new `viewStatus` Cloud Function to securely allow users to mark status items as viewed by adding their UID to the `viewedBy` array. - Update `StatusRepository` in the Flutter app to call the `viewStatus` Cloud Function instead of performing direct Firestore updates. - Export the new `viewStatus` function in `functions/index.js`. Co-authored-by: Salint <[email protected]>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
🎯 What: The vulnerability fixed
This PR addresses insecure Firestore rules for the
statusescollection where any authenticated user could create, update, or delete any status document.Without these changes, a malicious authenticated user could:
🛡️ Solution: How the fix addresses the vulnerability
firestore.rulesto ensure that forcreate,update, anddeleteoperations, theuserIdfield in the document matches theuidof the authenticated user.viewStatusCloud Function was added to safely allow other users to mark a status as viewed by appending their UID to theviewedByarray.StatusRepositoryto use the new Cloud Function for marking statuses as viewed, ensuring no loss of functionality while maintaining security.PR created automatically by Jules for task 2550379534735389613 started by @Salint