HubNest Docs

RBAC & Permissions

Granular security guidelines covering platform-wide user roles, resource permission matrices, and routing middlewares.

Role-Based Access Control (RBAC)

HubNest CRM implements standard Role-Based Access Control to enforce security boundaries across all corporate tenants. Each tenant workspace defines specific roles with corresponding system permissions.


System Roles Hierarchy

Access permissions follow a strict cascading model where higher-ranking roles inherit capabilities from subordinate roles.

Role NameScopeKey Capabilities
Super AdminPlatform-WideGlobal system monitoring, tenant workspace management, subscription pricing, database backups, audit logs.
AdminTenant ScopedUser invites, role assignments, Twilio/Stripe API key configs, invoice setups, workspace details edits.
Sales ManagerDepartment ScopedPipeline configuration, lead auto-assignment triggers, team conversion tracking, sales target adjustments.
Sales ExecutiveUser ScopedLead drag-and-drop actions, contact logs updates, client email sending, meeting scheduler access.
Finance ManagerDepartment ScopedInvoice generation, transaction logging, vendor payments management, payroll adjustments.
Support ManagerDepartment ScopedSLA policy updates, bug severity tracking, ticket routing filters, knowledge base edits.

API Security Middleware

Route authorization checks are handled at the backend routing level using an Express auth middleware:

// Middleware to assert active user role permissions
function authorize(rolesAllowed = []) {
  return (req, res, next) => {
    const userRole = req.user.role;
    
    // Super Admins override all checks
    if (userRole === 'Super Admin') {
      return next();
    }
    
    if (rolesAllowed.includes(userRole)) {
      return next();
    }
    
    return res.status(403).json({
      success: false,
      message: 'Access Denied: You do not possess required permissions.'
    });
  };
}

Middleware Usage Example:

const router = require('express').Router();

// Only Sales Managers and Admins can adjust conversion probabilities
router.put('/leads/probability', authorize(['Admin', 'Sales Manager']), async (req, res) => {
  // Update logic...
});

Row-Level Security & Scoping

Even if a role permits read/write actions (e.g. Sales Executive), users can only access records belonging to their active tenant_id. Scoping filters are applied during DB queries:

SELECT * FROM leads 
WHERE tenant_id = :active_tenant_id 
  AND (assigned_to = :active_user_id OR :active_user_role IN ('Admin', 'Sales Manager'));

This query ensures that Sales Executives can only view leads assigned directly to them, while managers and admins can inspect all leads in the tenant's pipeline.

On this page