feat: adding firestore rules

pull/322/head
Tom Arra 3 years ago
parent 182e8f56cb
commit 852c14fa60

@ -1,11 +1,10 @@
{ {
"firestore": {
"rules": "firestore.rules"
},
"hosting": { "hosting": {
"public": "build/web", "public": "build/web",
"site": "ashehwkdkdjruejdnensjsjdne", "site": "ashehwkdkdjruejdnensjsjdne",
"ignore": [ "ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
"firebase.json",
"**/.*",
"**/node_modules/**"
]
} }
} }

@ -0,0 +1,29 @@
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /leaderboard/{userId} {
function prohibited(initials) {
let prohibitedInitials = get(/databases/$(database)/documents/prohibitedInitials/list);
return initials in prohibitedInitials;
}
function inCharLimit(initials) {
return initials.size() < 4;
}
function isAuthedUser(auth) {
return auth.token.aud == "pinball-dev" && auth.token.firebase.sign_in_provider == "anonymous"
}
// Leaderboard can be read if it doesn't contain any prohibited initials
allow read: if !prohibited(resource.data.playerInitials);
// A leaderboard entry can be created if the user is authenticated,
// it's 3 characters long, and not a prohibited combination.
allow create: if isAuthedUser(request.auth) &&
inCharLimit(request.resource.data.playerInitials) &&
!prohibited(request.resource.data.playerInitials);
}
}
}
Loading…
Cancel
Save