Breadcrumbs

User Roles

Learn How to Use User Roles in Your NextKit App


The NextKit Starter has three default roles:

tsenum MembershipRole {
  Member = 0,
  Admin = 1,
  Owner = 2,
}
 
export default MembershipRole;

We use an enum, but you can convert this to an object if you need more granular permissions.

The permissions are hierarchical, which means that if we had a role with a lower level (Readonly), we would add it before Member:

tsexport enum MembershipRole {
  Readonly = 0,
  Member = 1,
  Admin = 2,
  Owner = 3,
}

When writing permissions between users, we can check if the user performing the action has a greater role than the target user.

You can extend the role above easily by adding your own, for example:

tsexport enum MembershipRole {
  Readonly = 0,
  AccountManager = 1,
  Owner = 2,
}

Afterward, remember to add the name and descriptions of these roles in the translations file common.json:

json"roles": {
  "owner": {
    "label": "Owner",
    "description": "Can change any setting, invite new members and manage billing"
  },
  "accountmanager": {
    "label": "Account Manager",
    "description": "Can change some settings, invite members, perform disruptive actions"
  },
  "readonly": {
    "label": "Readonly",
    "description": "Can only read information"
  }
}

Learn more about using user roles in your permissions system.

The role is stored in the database as a column in the memberships tabel.