User Roles & Permissions
Vodia Analytics uses a four-tier role system. Each role determines what pages and data a user can access.
Role Hierarchy
| Role | Dashboard | Calls | Queues | Extensions | AI Insights | Admin |
|---|---|---|---|---|---|---|
| super_admin | ✅ All data | ✅ All data | ✅ All data | ✅ All data | ✅ All data | ✅ Full access |
| admin | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ✅ Tenant admin |
| queue_manager | ✅ Queue-scoped | ✅ Queue-scoped | ✅ Queue-scoped | ✅ Queue-scoped | ✅ Queue-scoped | ❌ |
| viewer | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ✅ Tenant data | ❌ |
Tenant Scoping
All data queries are automatically scoped by the user's assigned tenant (PBX domain). An admin for office.example.com can never see data from branch.example.com.
Queue Manager
The queue_manager role is designed for team leads who manage specific queues. When assigned queues (e.g. ["400", "401"]), all data across every page is filtered to only show calls that passed through those queues. This is enforced at the API level — the middleware injects answering_queue: { $in: user.queues } into every database query.
Queue managers see the same pages as viewers (Dashboard, Calls, Queues, Extensions, AI Insights) but every metric, chart, and table only reflects their assigned queues.