Firebase - Firestore rules: throttle create requests









up vote
0
down vote

favorite












Since I've found nothing online. I would like to know, if there is a firestore rule that allows create request for stories from a simple user only after every 60 sec?



My Data-structure is simple:



stories--
|
- document 1
- document 2
...
users--
|
- document 1
- document 2
...


I basically have two top level collections. The documents of my Stories collection contains also a timestamp property.
So on the rules for my stories collection, it should look like this:



service cloud.firestore 
match /databases/database/documents
match /stories/storyId

allow create: if isSignedIn() && isVerified() && throttleRequestTime();




function throttleRequestTime()
return request.time < ***the value to compare*** + duration.value(60, 's');










share|improve this question



















  • 1




    What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
    – Renaud Tarnec
    18 hours ago










  • You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
    – Frank van Puffelen
    15 hours ago














up vote
0
down vote

favorite












Since I've found nothing online. I would like to know, if there is a firestore rule that allows create request for stories from a simple user only after every 60 sec?



My Data-structure is simple:



stories--
|
- document 1
- document 2
...
users--
|
- document 1
- document 2
...


I basically have two top level collections. The documents of my Stories collection contains also a timestamp property.
So on the rules for my stories collection, it should look like this:



service cloud.firestore 
match /databases/database/documents
match /stories/storyId

allow create: if isSignedIn() && isVerified() && throttleRequestTime();




function throttleRequestTime()
return request.time < ***the value to compare*** + duration.value(60, 's');










share|improve this question



















  • 1




    What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
    – Renaud Tarnec
    18 hours ago










  • You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
    – Frank van Puffelen
    15 hours ago












up vote
0
down vote

favorite









up vote
0
down vote

favorite











Since I've found nothing online. I would like to know, if there is a firestore rule that allows create request for stories from a simple user only after every 60 sec?



My Data-structure is simple:



stories--
|
- document 1
- document 2
...
users--
|
- document 1
- document 2
...


I basically have two top level collections. The documents of my Stories collection contains also a timestamp property.
So on the rules for my stories collection, it should look like this:



service cloud.firestore 
match /databases/database/documents
match /stories/storyId

allow create: if isSignedIn() && isVerified() && throttleRequestTime();




function throttleRequestTime()
return request.time < ***the value to compare*** + duration.value(60, 's');










share|improve this question















Since I've found nothing online. I would like to know, if there is a firestore rule that allows create request for stories from a simple user only after every 60 sec?



My Data-structure is simple:



stories--
|
- document 1
- document 2
...
users--
|
- document 1
- document 2
...


I basically have two top level collections. The documents of my Stories collection contains also a timestamp property.
So on the rules for my stories collection, it should look like this:



service cloud.firestore 
match /databases/database/documents
match /stories/storyId

allow create: if isSignedIn() && isVerified() && throttleRequestTime();




function throttleRequestTime()
return request.time < ***the value to compare*** + duration.value(60, 's');







firebase google-cloud-firestore firebase-security-rules






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 15 hours ago









Frank van Puffelen

217k25359384




217k25359384










asked 18 hours ago









scare-me

222220




222220







  • 1




    What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
    – Renaud Tarnec
    18 hours ago










  • You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
    – Frank van Puffelen
    15 hours ago












  • 1




    What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
    – Renaud Tarnec
    18 hours ago










  • You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
    – Frank van Puffelen
    15 hours ago







1




1




What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
– Renaud Tarnec
18 hours ago




What about firebase.google.com/docs/reference/rules/rules.timestamp_ and firebase.google.com/docs/reference/rules/rules.duration_? (I've never tried so I cannot help you more but definitely curious to see if it can be use in your case!)
– Renaud Tarnec
18 hours ago












You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
– Frank van Puffelen
15 hours ago




You can definitely protect access to each document with the timestamp property. You can however not protect querying across the collection based on the timestamp property (at least not when I last tried it).
– Frank van Puffelen
15 hours ago

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53224147%2ffirebase-firestore-rules-throttle-create-requests%23new-answer', 'question_page');

);

Post as a guest



































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53224147%2ffirebase-firestore-rules-throttle-create-requests%23new-answer', 'question_page');

);

Post as a guest














































































Popular posts from this blog

Use pre created SQLite database for Android project in kotlin

Darth Vader #20

Ondo