Hi everybody, I'm new to AppWrite and I need some help designing a database. I'm trying to set up a database where:
- There are USERS
- A USER can create an ACCOUNT becoming the owner
- An ACCOUNT can have multiple EVENTS
- An ACCOUNT owner (USER) can give to other users access to the ACCOUNT turning them ACCOUNT managers.
- An OWNER can CRUD the account and it's events.
- A MANAGER can CRUD account events but only can RU the ACCOUNT he manages.
I've been reading the docs and there is a place where they talk about permissions (https://appwrite.io/docs/advanced/platform/permissions). As I understand, for each ACCOUNT that a logged in user creates it will be granted with .read() .update() .delete() permissions. And then for each manager a user would add I will need to create an endpoint with the updateDocument statement adding the new manager in the .read() and .update() permissions.
Is that alright? I'm used to SQL design systems where I needed to create a table user_accounts[user, account, role] and add and delete account managers there.
Then I have a second question. If a manager creates an event for the Account he manages, on the createDocument statement I need to add permissions for all users that manage this account and the account owner? In the same way, when an account owner creates an event, in the createDocument statement do I have to add permissions for the owner and all the users that manage this account? The way I'm used to do that is, before read, update or delete I check the role in the user_accounts table and decide if this user has enought permissions to perform the action he wants to do.
Thanks in advance. One thing that has amazed me is the incredible appwrite community π
Recommended threads
- Auth not working
guys my appwrite auth isnt working? oauth works (Sign in with google n discord) i have 2 websites deployed where do i get help when i do sign in with email and ...
- Issue related to index
Why it is showing this error?
- Project paused despite active use β rest...
Hey team! My Appwrite Cloud project (685579e5000d78e67009) has been marked as paused due to inactivity, but it's actively used in production. I clicked the Rest...