Role-Based Access Control (RBAC)

Our RBAC system provides flexible and secure permission management for workspaces.

Initial Setup

To seed the database with default roles and permissions:

Run the database seed script
Terminal

This will create:

  • All default permissions in the database
  • Three default roles (Owner, Admin, Member)
  • Role-permission relationships

Permissions System

Authorization

Our platform uses a granular permission system to control access to resources:

Available Permissions

Predefined permissions constants:

TYPESCRIPT

Member Permissions

  • view:membersView workspace members
  • create:membersAdd new members
  • update:membersUpdate member details
  • delete:membersDelete members
  • manage:membersFull member management
  • invite:membersSend invitations
  • remove:membersRemove members

Workspace Permissions

  • manage:rolesManage role assignments
  • manage:workspaceManage workspace settings
  • delete:workspaceDelete workspace
  • transfer:ownershipTransfer ownership

Item Permissions

  • view:itemsView workspace items
  • create:itemsCreate new items
  • update:itemsUpdate existing items
  • delete:itemsDelete items

Default Roles

Access Control

The system comes with predefined roles that have specific permissions:

Default Roles Configuration

Predefined roles with their permissions:

TYPESCRIPT

Owner

All Permissions

Workspace owner with full administrative access

Permissions: All permissions (*)

Admin

Limited Permissions

Workspace administrator with member management capabilities

Permissions: view:members, create:members, update:members, delete:members

Member

Basic Access

Regular workspace member with basic access

Permissions: view:members

The RBAC system is automatically initialized during database seeding. Permissions and roles are created with predefined settings but can be modified through the admin interface.

Technical Implementation

The RBAC system uses a many-to-many relationship between roles and permissions, implemented using PostgreSQL through Drizzle ORM. This allows for flexible permission management and easy role assignments.

Check if user has a specific permission
TYPESCRIPT