Role-Based Access Control (RBAC)
Switchyard uses a comprehensive RBAC system built on Supabase, providing granular control over user permissions.Database Schema
The RBAC system consists of five core tables:roles
Stores role definitions.permissions
Stores permission definitions following theresource.action pattern.
role_permissions
Junction table linking roles to permissions.user_roles
Junction table linking Supabase users to roles.Default Roles
| Role | Description | System? |
|---|---|---|
superadmin | Full system access, bypasses all permission checks | Yes |
manager | Store operations, inventory, orders, products | Yes |
picker | Warehouse picking operations, inventory scanning | Yes |
driver | Delivery operations, order viewing | Yes |
robot | Automated system operations | Yes |
Permissions
Permissions follow theresource.action naming convention:
| Permission | Resource | Action | Description |
|---|---|---|---|
orders.read | orders | read | View orders |
orders.write | orders | write | Create and update orders |
orders.delete | orders | delete | Cancel orders |
inventory.read | inventory | read | View inventory |
inventory.write | inventory | write | Update inventory levels |
inventory.scan | inventory | scan | Scan and process inventory |
products.read | products | read | View products |
products.write | products | write | Create and update products |
scanner.use | scanner | use | Use scanner functionality |
roles.admin | roles | admin | Manage roles and permissions |
Default Permission Assignments
| Role | Permissions |
|---|---|
superadmin | All permissions |
manager | orders., inventory., products., customers., settings.read |
picker | inventory.*, orders.read, products.read, scanner.use |
driver | orders.read, customers.read, scanner.use |
robot | inventory.*, products.read, scanner.use |