Skip to content

Data permissions

Who can read and write each table: public, signed-in users, only their own rows, or admins. Checked on the server for every request.

Last updated September 17, 2026

On this page

Every table has two rules: who may read it and who may write to it. They are checked on the server for every request, whether it comes from a page, from a backend function or from the API. Hiding a button is presentation; a permission is the lock.

Read levels

ReadWho sees the rows
PublicAnyone, signed in or not. For content the app curates: a menu, a catalogue, listings, a blog.
Signed-in usersAnyone with an account in your app.
Only their own rowsEach signed-in user sees only rows they created. Admins see all. The right choice for orders, bookings, journals, saved items, messages.
App admins onlyOnly users whose role is admin. Settings, pricing rules, audit trails, a moderation queue.

Write levels

WriteWho can create rows
PublicAnyone, including visitors who are not signed in.
Signed-in usersAnyone with an account. The default.
App admins onlyOnly admins. For content everyone reads and only staff edits, pair it with a wider read level.

Editing and deleting

  • Changing or deleting a row always needs a signed-in user.
  • An ordinary user can only change or delete rows they created themselves. An admin can change or delete any row.
  • A row created by an anonymous visitor has no owner, so it can never be edited from the app afterwards. That is fine for a contact form and wrong for anything a visitor must come back and revise, which needs accounts.

Common patterns

What it isReadWrite
Public content you author (menu, catalogue, blog)PublicApp admins only
Each customer's own orders or bookingsOnly their own rowsSigned-in users
A contact or enquiry formApp admins onlyHandled by intake forms
Staff-only settingsApp admins onlyApp admins only
Team notes everyone can see and add toSigned-in usersSigned-in users

Changing permissions

Open the table under Database, change the Read and Write selectors, and press Save access. The change applies immediately to the running app. You can also ask the builder, which sets permissions when it defines a table and describes them back to you.

Two kinds of admin. Your app's admins are its own users with the admin role. That is separate from your Praxivara account. You are automatically an admin of every app you build, which is why admin-only screens show up for you in the preview.

Checked by the security scan

The security scan reads every table's permissions alongside the code and flags a table that is more open than the app treats it.

Was this page helpful?