I want to implement role based restrictions in my application. I have the user role information in one collection documents. Now I want to write rules to restrict different Write, Update operation on other collections of the database.
Since I am using Firestore database with React-Native I only pass the respective collection's document info while inserting/updating. So how can I pass the user's role information along with this so that my rule gets authenticated and that data doesn't go into other collection.
One example depicting above scenario:
/collection1/document1
{
prop1: value1,
prop2: value2,
role: "WRITE"
}
/collection1/document2
{
prop1: value1,
prop2: value2,
role: "READ"
}
Now consider that current logged in user is document2
.
I have another collection:
/collection2/doc1
{
userRef: document1, //this is id of document1 from collection1
...
}
I want to configure firestore rule for collection2 that if request has come from user with role="WRITE"
then only allow it to isert/update documents.
Have read many articles and ways but any of them does not satisfy this use-case.
Any help would be appreciated.
document2
". I'm having a hard time understanding what this means. How does the logged in user relate to the document? It might help if you give your collections and documents meaningful names for the use-case you're asking about. – Frank van Puffelen/users
collection doesn't work. Hope this clears your doubt. – Hriday Modiuser1
can have ADMIN access on client1 while same user can have READ access on client2. Hence here Role is based on User+Client and not only on User, so solution provided in video won't work. – Hriday Modi