Skip to content

Commit db530a1

Browse files
committed
Add rules for analytics collection
1 parent dc378b9 commit db530a1

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

firebase/firestore.rules

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,5 +1212,43 @@ service cloud.firestore {
12121212
;
12131213
}
12141214
}
1215+
match /personalAnalytics/{user} {
1216+
allow create: if
1217+
// Type checks
1218+
(!('createdWhen' in request.resource.data.keys()) || request.resource.data.createdWhen == null || request.resource.data.createdWhen is timestamp) &&
1219+
request.resource.data.type is string &&
1220+
(!('str1' in request.resource.data.keys()) || request.resource.data.str1 == null || request.resource.data.str1 is string) &&
1221+
(!('str2' in request.resource.data.keys()) || request.resource.data.str2 == null || request.resource.data.str2 is string) &&
1222+
(!('str3' in request.resource.data.keys()) || request.resource.data.str3 == null || request.resource.data.str3 is string) &&
1223+
(!('float1' in request.resource.data.keys()) || request.resource.data.float1 == null || request.resource.data.float1 is float) &&
1224+
(!('float2' in request.resource.data.keys()) || request.resource.data.float2 == null || request.resource.data.float2 is float) &&
1225+
(!('float3' in request.resource.data.keys()) || request.resource.data.float3 == null || request.resource.data.float3 is float) &&
1226+
(!('time1' in request.resource.data.keys()) || request.resource.data.time1 == null || request.resource.data.time1 is timestamp) &&
1227+
(!('time2' in request.resource.data.keys()) || request.resource.data.time2 == null || request.resource.data.time2 is timestamp) &&
1228+
(!('time3' in request.resource.data.keys()) || request.resource.data.time3 == null || request.resource.data.time3 is timestamp) &&
1229+
1230+
1231+
// Ownership rules
1232+
request.auth.uid == user
1233+
;
1234+
allow update: if
1235+
// Type checks
1236+
(!('createdWhen' in request.resource.data.keys()) || request.resource.data.createdWhen == null || request.resource.data.createdWhen is timestamp) &&
1237+
(!('type' in request.resource.data.keys()) || request.resource.data.type is string) &&
1238+
(!('str1' in request.resource.data.keys()) || request.resource.data.str1 == null || request.resource.data.str1 is string) &&
1239+
(!('str2' in request.resource.data.keys()) || request.resource.data.str2 == null || request.resource.data.str2 is string) &&
1240+
(!('str3' in request.resource.data.keys()) || request.resource.data.str3 == null || request.resource.data.str3 is string) &&
1241+
(!('float1' in request.resource.data.keys()) || request.resource.data.float1 == null || request.resource.data.float1 is float) &&
1242+
(!('float2' in request.resource.data.keys()) || request.resource.data.float2 == null || request.resource.data.float2 is float) &&
1243+
(!('float3' in request.resource.data.keys()) || request.resource.data.float3 == null || request.resource.data.float3 is float) &&
1244+
(!('time1' in request.resource.data.keys()) || request.resource.data.time1 == null || request.resource.data.time1 is timestamp) &&
1245+
(!('time2' in request.resource.data.keys()) || request.resource.data.time2 == null || request.resource.data.time2 is timestamp) &&
1246+
(!('time3' in request.resource.data.keys()) || request.resource.data.time3 == null || request.resource.data.time3 is timestamp) &&
1247+
1248+
1249+
// Ownership rules
1250+
request.auth.uid == user
1251+
;
1252+
}
12151253
}
12161254
}

tools/common.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import StorageManager, { StorageBackend } from '@worldbrain/storex'
22
import { DexieStorageBackend } from '@worldbrain/storex-backend-dexie'
33
import inMemory from '@worldbrain/storex-backend-dexie/lib/in-memory'
44
import { SharedSyncLogStorage } from '@worldbrain/storex-sync/lib/shared-sync-log/storex'
5+
import PersonalAnalyticsStorage from '@worldbrain/memex-common/lib/analytics/storage'
56
import ActivityStreamStorage from '@worldbrain/memex-common/lib/activity-streams/storage'
67
import ActivityFollowsStorage from '@worldbrain/memex-common/lib/activity-follows/storage'
78
import ContentSharingStorage from '@worldbrain/memex-common/lib/content-sharing/storage'
@@ -28,7 +29,8 @@ export async function createStorage() {
2829
autoPkType: 'string'
2930
}),
3031
userManagement: new UserManagementStorage({ storageManager: serverStorageManager }),
31-
personalCloud: new PersonalCloudStorage({ storageManager: serverStorageManager, autoPkType: 'string' })
32+
personalCloud: new PersonalCloudStorage({ storageManager: serverStorageManager, autoPkType: 'string' }),
33+
personalAnalytics: new PersonalAnalyticsStorage({ storageManager: serverStorageManager })
3234
}
3335
registerModuleMapCollections(serverStorageManager.registry, serverModules)
3436
await serverStorageManager.finishInitialization()

0 commit comments

Comments
 (0)