@canxjs/dominion provides advanced role-based access control (RBAC) for your application. Inspired by Spatie Laravel Permission.
1npm install @canxjs/dominion23node canx dominion:install4node canx migrate
Add the HasRoles mixin to your User model.
1import { Model } from "canxjs";2import { HasRoles } from "@canxjs/dominion";34class User extends HasRoles(Model) {5// Your user model...6}
1import { Role, Permission } from "@canxjs/dominion";23// Create roles and permissions4await Permission.create({ name: "create posts" });5const role = await Role.create({ name: "writer" });67// Assign role to user8const user = await User.find(1);9await user.assignRole("writer");1011// Check role12if (await user.hasRole("writer")) {13// User is a writer14}
Give permissions directly to users, or sync all roles at once.
1// Direct permissions2await user.givePermissionTo("delete posts");34// Check permission (both direct and role-based)5if (await user.hasPermissionTo("delete posts")) {6// User can delete posts7}89// Sync roles (replace all current roles)10await user.syncRoles("admin", "manager");