Skip to content

Access Control

Define access rules in src/cms/access.ts. Rules are pure functions evaluated before every API operation.

import { defineAccess } from "./core/define";
const isAdmin = ({ user }) => user?.role === "admin";
const isEditor = ({ user }) => user?.role === "admin" || user?.role === "editor";
export default defineAccess({
posts: {
read: () => true,
create: isEditor,
update: isEditor,
delete: isAdmin,
publish: isEditor,
},
users: {
read: isAdmin,
create: isAdmin,
update: isAdmin,
delete: isAdmin,
},
});
OperationWhen checked
readfind, findOne, findById
createcreate
updateupdate
deletedelete
publishpublish, unpublish
scheduleschedule (falls back to publish rule)
({ user, doc, operation, collection }) => boolean;
  • user — current session user ({ id, role, email } or null)
  • doc — existing document (for update/delete/publish)
  • operation — operation name
  • collection — collection slug

See Fields — restrict which fields specific roles can update.