Can't grant Permission.read() for another user - what's the solution?
- 0
- Flutter
- General
- Databases
- Cloud
- Functions
I'm building a therapist-client app. When a client creates a document, how do I give their therapist read access?
The Problem
// Client creates a document
databases.createDocument(
permissions: [
Permission.read(Role.user(clientId)), // ✅ Works
Permission.read(Role.user(therapistId)), // ❌ Error: Can't grant permission for another user
]
)
I can only grant permissions I already have. The client can't grant permissions on behalf of the therapist.
My Situation
- 1000 clients
- Each client has 1 assigned therapist
- Clients create ~10 documents per day
- Therapists should ONLY see their assigned clients (not other therapists' clients)
What Should I Use?
Option 1: Cloud Function
- Run a function every time a client creates a document
- Function adds therapist permission using Server SDK
- Problem: 10,000 function calls per day = expensive
Option 2: Teams
- Create a team for each client-therapist pair
- Use
Role.team(teamId)for permissions - Problem: Is 1000 teams too many? Will it be slow?
Option 3: Server Function for Reads
- Clients create docs with only their own permissions
- Therapists call a function to fetch data
- Function validates and returns data using Server SDK
- Problem: Adds latency when therapist views data
Option 4: Anything else?
My Question
Which approach is best? Are 1000 teams okay, or should I use functions?
Recommended threads
- SSL Certificate Failure - Using Appwrite...
When we attempt to apply our custom domain to our appwrite site, we consistently receive the following error. [23:44:49] Processing SSL certificate issuance. ...
- Regarding Rate Limits
Hello, I am a student engineer who built an internal website for my university club using AppWrite. My club currently has around 500 members, and when I recent...
- Error trying to deploy functions from CL...
✗ Error • on-auth-create (6a00b2ab000c9ce2949b) • Server Error ✗ Error: No functions were pushed. Prject ID: 69ffe0270033a4ac420a