60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| rules_version = '2';
 | |
| 
 | |
| // To deploy: `firebase deploy --only firestore:rules`
 | |
| service cloud.firestore {
 | |
|   match /databases/{database}/documents {
 | |
| 
 | |
|     function isAdmin() {
 | |
|       return request.auth.uid == 'igi2zGXsfxYPgB0DJTXVJVmwCOr2' // Austin
 | |
|         || request.auth.uid == '5LZ4LgYuySdL1huCWe7bti02ghx2' // James
 | |
|         || request.auth.uid == 'tlmGNz9kjXc2EteizMORes4qvWl2' // Stephen
 | |
|         || request.auth.uid == 'IPTOzEqrpkWmEzh6hwvAyY9PqFb2' // Manifold
 | |
|     }
 | |
| 
 | |
|     match /users/{userId} {
 | |
|       allow read;
 | |
|       allow update: if resource.data.id == request.auth.uid 
 | |
|         && request.resource.data.diff(resource.data).affectedKeys()
 | |
|             .hasOnly(['bio', 'bannerUrl', 'website', 'twitterHandle', 'discordHandle']);
 | |
|     }
 | |
| 
 | |
|     match /private-users/{userId} {
 | |
|       allow read: if resource.data.id == request.auth.uid || isAdmin();
 | |
|     }
 | |
| 
 | |
|     match /private-users/{userId}/views/{viewId} {
 | |
|       allow create: if userId == request.auth.uid;
 | |
|     }
 | |
| 
 | |
|     match /contracts/{contractId} {
 | |
|       allow read;
 | |
|       allow update: if request.resource.data.diff(resource.data).affectedKeys()
 | |
|         .hasOnly(['description', 'closeTime', 'tags', 'lowercaseTags']);
 | |
|       allow update: if isAdmin();
 | |
|       allow delete: if resource.data.creatorId == request.auth.uid;
 | |
|     }
 | |
| 
 | |
|     match /{somePath=**}/bets/{betId} {
 | |
|       allow read;
 | |
|     }
 | |
| 
 | |
|     match /{somePath=**}/comments/{commentId} {
 | |
|       allow read;
 | |
|       allow create: if request.auth != null;
 | |
|     }
 | |
| 
 | |
|     match /{somePath=**}/answers/{answerId} {
 | |
|       allow read;
 | |
|     }
 | |
| 
 | |
|     match /folds/{foldId} {
 | |
|       allow read;
 | |
|       allow update, delete: if request.auth.uid == resource.data.curatorId;
 | |
|     }
 | |
| 
 | |
|     match /{somePath=**}/followers/{userId} {
 | |
|       allow read;
 | |
|       allow write: if request.auth.uid == userId;
 | |
|     }
 | |
|   }
 | |
| } |