@@ -19,6 +19,7 @@ const KEYS = ['get', 'list', 'create', 'update', 'delete'];
1919const COLLECTIONS : Permissions = {
2020 _search : {
2121 get : [ false ] ,
22+ list : [ false ] ,
2223 create : [ false ] ,
2324 update : [ false ] ,
2425 delete : [ false ]
@@ -44,8 +45,7 @@ const DEFAULT_COLLECTION = () => ({
4445 delete : [ false ]
4546} ) ;
4647
47- const RULES_BASE = `
48- rules_version = '2';
48+ const RULES_BASE = `rules_version = '2';
4949service cloud.firestore {
5050 function hasRoles(roles) {
5151 return request.auth.token.role in roles
@@ -86,8 +86,7 @@ service cloud.firestore {
8686 match /databases/{database}/documents {
8787 [[R]]
8888 }
89- }
90- ` ;
89+ }` ;
9190
9291export async function compileRules ( ) {
9392 const fs = firestore ( ) ;
@@ -130,6 +129,10 @@ export async function compileRules() {
130129 permissions [ key ] = permissions [ key ] . filter ( Boolean ) ;
131130 }
132131
132+ if ( ! permissions [ key ] . length ) {
133+ permissions [ key ] = [ false ] ;
134+ }
135+
133136 permissions [ key ] = permissions [ key ] . join ( ' || ' ) ;
134137 }
135138
@@ -142,7 +145,7 @@ export async function compileRules() {
142145
143146 source . push ( `
144147 match /${ id } /{item=**} {
145- ${ KEYS . map ( key => `allow ${ key } : if ${ collection [ key ] } ;` ) . join ( '\n' ) }
148+ ${ KEYS . map ( ( key , index ) => `${ index ? ' ' : '' } allow ${ key } : if ${ collection [ key ] } ;` ) . join ( '\n' ) }
146149 }
147150 ` ) ;
148151 }
@@ -162,5 +165,7 @@ export async function compileRules() {
162165
163166 const final = RULES_BASE . replace ( '[[R]]' , source . join ( '\n' ) ) ;
164167
168+ console . log ( 'final' , final ) ;
169+
165170 await securityRules ( ) . releaseFirestoreRulesetFromSource ( final ) ;
166171}
0 commit comments