ProxPanel ships with 220 default permissions organised into 39 categories. Each permission gates one specific action (subscribers.create) or scope (subscribers.view_all). Permissions are stored in the permissions table and assigned to users via permission_groups and the permission_group_permissions join table.
This page lists the main permission categories, what they gate, and which user types typically receive them. Use it when designing a custom Permission Group, debugging an unexpected “Access Denied”, or auditing a reseller’s privileges.
Note
The authoritative, always-current catalog is the permissions table, seeded from the INSERT INTO permissions ... statements in schema.sql. The tables below cover the primary categories; new feature areas add their own permissions there.
The backend middleware (internal/middleware/auth.go) treats permissions as follows:
Caller Behaviour Admin user Bypass — every permission granted automatically. Reseller with NO permission_group Bypass — full access (backward-compatible default). Reseller WITH a permission_group Only the permissions in the group are granted. Support / Collector / Read-only Same as reseller-with-group. Customer (subscriber) login None of these permissions apply — customers use a separate, simpler scope.
When a user lacks a permission, the backend returns HTTP 403 and the frontend’s <PermissionRoute> component renders an “Access Denied” page or hides the corresponding UI element.
Permissions follow category.action (e.g. subscribers.delete). Recurring suffixes:
Suffix Meaning .viewRead own scope only. .view_allRead system-wide / across all resellers. .createAdd a new row. .editModify own scope. .edit_allModify any row regardless of owner. .deleteRemove own scope. .delete_allRemove any row.
User-type abbreviations used in the tables below: A = admin, R = reseller, S = support, C = collector, RO = read-only / partner.
The dashboard itself is always visible; these permissions toggle the widgets shown on it and unlock the admin-only blocks.
Permission Description Typical user types dashboard.viewView dashboard A, R, S, C, RO dashboard.view_adminView admin dashboard widgets (Top Resellers, System Metrics, administrative terminationes) A dashboard.view_active_onlyFilter the dashboard subscriber counts to active only A, R dashboard.statsView dashboard statistics endpoint (/dashboard/stats) A, R
The largest category — subscribers are the central object in ProxPanel.
Permission Description Typical Gates subscribers.viewView subscribers (own scope) A, R, S, C, RO Subscribers page, subscriber detail subscribers.view_allView all subscribers system-wide A, RO (partner) Bypasses reseller filter subscribers.view_passwordView PPPoE password (GET endpoint + edit form) A, S Password field in edit modal subscribers.view_fupView FUP level in subscriber list A, R, S FUP column subscribers.view_graphView live bandwidth graph for own subscribers A, R, S Live graph icon subscribers.view_graph_allView live bandwidth graph for any subscriber A — subscribers.view_logsView per-subscriber logs (own scope) A, R, S Logs tab subscribers.view_logs_allView per-subscriber logs (all) A — subscribers.view_archivedView soft-deleted subscribers A Archived tab
Permission Description Typical Gates subscribers.createCreate subscribers A, R ”Add Subscriber” button subscribers.editEdit subscribers (own scope) A, R, S Edit form save subscribers.edit_allEdit any subscriber regardless of owner A — subscribers.renameRename subscriber username A, R Rename action subscribers.rename_allRename any subscriber A — subscribers.change_ownerReassign subscriber to a different reseller A, R Change Owner dialog subscribers.change_owner_allReassign any subscriber A — subscribers.change_serviceChange subscriber’s service plan A, R Change Service dialog subscribers.change_service_freeChange service without charging A — subscribers.change_expiryEdit expiry date directly A — subscribers.change_service_moneyCharge money for service change A, R — subscribers.change_service_money_allCharge money for any service change A — subscribers.change_bulkBulk-change operations A Change Bulk page
Permission Description Typical Gates subscribers.renewRenew subscriber expiry A, R, S Renew button subscribers.renew_allRenew any subscriber A — subscribers.add_daysAdd days to expiry A, R, S Add Days dialog subscribers.add_days_allAdd days to any subscriber A — subscribers.add_days_overdueAdd days when subscriber is past due A — subscribers.add_days_overdue_allSame, system-wide A — subscribers.inactivateActivate / deactivate subscribers A, R, S Inactivate toggle subscribers.inactivate_allActivate / deactivate any A — subscribers.disconnectDisconnect active session (CoA) A, R, S Disconnect button subscribers.disconnect_allDisconnect any session A —
Permission Description Typical Gates subscribers.deleteDelete subscribers (own) A, R Delete button subscribers.delete_allDelete any subscriber A — subscribers.delete_expiredDelete only expired ones A, R ”Delete Expired” bulk option subscribers.delete_all_expiredDelete any expired subscriber A — subscribers.restoreRestore archived subscribers A Archived → Restore subscribers.allow_refundPermit refund on deletion A Delete dialog subscribers.refund_no_moneyStop connection without refund A — subscribers.refund_no_money_allSame, system-wide A —
Permission Description Typical Gates subscribers.reset_fupReset FUP daily counters A, R, S Reset FUP button subscribers.reset_fup_allReset FUP for any subscriber A — subscribers.refill_quotaRefill monthly quota A, R — subscribers.refill_quota_allRefill quota for any A — subscribers.reset_macReset MAC binding A, R, S Reset MAC button subscribers.reset_mac_allReset MAC for any A — subscribers.unbind_macPermanently unbind MAC A — subscribers.queue_quotaUse queue-based quota counters A —
Permission Description Typical Gates subscribers.pingPing a subscriber A, R, S Ping icon subscribers.ping_allPing any subscriber A — subscribers.torchView live torch traffic A Torch icon subscribers.port_checkCheck subscriber’s port (WAN test) A — subscribers.wan_checkSkip / recheck WAN management A — subscribers.bandwidth_rulesManage subscriber-level bandwidth rules A, R Bandwidth Rules section in edit
Permission Description Typical Gates subscribers.bulk_importBulk import from CSV A, R Bulk Import page subscribers.bulk_addAdmin bulk add A — subscribers.bulk_updateBulk update fields A — subscribers.bulk_actionRun bulk actions (renew / disconnect / etc.) A, R Bulk Action menu subscribers.exportExport own subscribers A, R Export button subscribers.export_allExport all subscribers A, RO — subscribers.autorechargeConfigure auto-recharge per user A, R Auto-recharge toggle
Permission Description Typical Gates services.viewView / list services A, R, S, C, RO Services page services.createCreate services A Add Service button services.editEdit services A Service edit form services.deleteDelete services A Service delete button
Resellers see Services in read-only mode by default. Per-reseller pricing is configured via reseller_services (separate row per reseller × service).
Permission Description Typical Gates nas.viewView / list NAS devices A, R (read-only) NAS page nas.createCreate NAS devices A Add NAS button nas.editEdit NAS devices A NAS edit form nas.deleteDelete NAS devices A NAS delete nas.syncSync NAS state (pools, queues, online users) A Sync icon nas.testTest NAS connection (API + RADIUS) A Test button
Permission Description Typical Gates sessions.viewView own subscribers’ sessions A, R, S Sessions page sessions.view_allView all sessions system-wide A, RO Bypasses reseller filter sessions.disconnectDisconnect a session A, R, S Disconnect action sessions.view_historyView session history (radacct) A, R, S History tab
The reseller category includes both “manage other resellers” (admin perspective) and “manage sub-resellers” (reseller perspective).
Permission Description Typical Gates resellers.viewView own / sub-resellers A, R Resellers page resellers.view_allView all resellers system-wide A — resellers.createCreate resellers / sub-resellers A, R Add Reseller resellers.editEdit resellers in scope A, R Edit form resellers.edit_allEdit any reseller A — resellers.deleteDelete own / sub-resellers A, R Delete button resellers.change_ownerReassign reseller parent A, R Change Parent dialog resellers.change_owner_allReassign any reseller A — resellers.add_moneyTop up reseller balance A, R Add Money resellers.add_money_allTop up any reseller A — resellers.withdrawWithdraw from reseller balance A, R Withdraw resellers.withdraw_allWithdraw from any reseller A — resellers.view_subresellersSee the sub-resellers tree A, R Tree view resellers.view_balanceView reseller balance A, R, C Balance column resellers.set_creditSet reseller credit limit A Credit dialog resellers.add_supportAdd / edit / list support users A, R Users → Support resellers.add_collectorAdd / edit / list collector users A, R Users → Collectors resellers.notificationSend notifications via user portal A, R Push Notification button resellers.recharge_codeRecharge via voucher code API (own) A, R API endpoint resellers.recharge_code_allRecharge any subscriber via voucher A — resellers.billing_addBilling-side reseller add A —
Permission Description Typical Gates invoices.viewView invoices A, R, C Invoices page invoices.createCreate invoices A, R Add Invoice invoices.editEdit invoices A, R Invoice edit invoices.deleteDelete invoices A Delete button invoices.printPrint invoices (PDF) A, R, C Print button invoices.emailEmail invoices to subscriber A, R Email button invoices.mark_paidMark invoice as paid manually A, R, C Mark Paid
Permission Description Typical Gates prepaid.viewView / list prepaid cards A, R Prepaid Cards page prepaid.createGenerate prepaid cards A, R Generate button prepaid.editUse / edit prepaid cards A, R Card edit prepaid.generateGenerate cards for own subscribers A, R Per-subscriber generate prepaid.generate_allGenerate for any subscriber A — prepaid.deleteDelete prepaid cards A, R Delete prepaid.disableDisable cards without deleting A, R Disable toggle prepaid.printPrint prepaid cards A, R Print prepaid.exportExport prepaid cards (CSV) A, R Export prepaid.hide_codeHide card codes from operator view A —
Permission Description Typical Gates reports.viewView reports landing page A, R, RO Reports page reports.generate_allGenerate every kind of report A — reports.subscribersSubscriber reports A, R Subscribers report reports.revenueRevenue reports A, R Revenue report reports.servicesPer-service reports A, R Services report reports.usageUsage reports A, R Usage report reports.resellersPer-reseller reports A Resellers report reports.exportExport any report A, R Export button
Permission Description Typical Gates transactions.viewView own transactions A, R, C Transactions page transactions.view_allView all transactions A, RO Bypasses reseller filter transactions.createCreate transactions manually A — transactions.deleteDelete transactions A Delete
Permission Description Typical Gates tickets.viewView tickets A, R, S Tickets page tickets.createCreate tickets A, R, S New Ticket tickets.editEdit tickets A, R, S Edit tickets.deleteDelete tickets A Delete tickets.replyReply to tickets A, R, S Reply box tickets.assignAssign tickets to operators A Assign dropdown tickets.closeClose tickets A, R, S Close button
Permission Description Typical Gates backups.viewView backups list A Backups page backups.createCreate a backup A ”Backup Now” backups.editEdit backup schedules A Schedule edit backups.restoreRestore from a backup A Restore button backups.deleteDelete backups A Delete backups.downloadDownload backup file A Download
Permission Description Typical Gates settings.viewView settings A Settings page settings.editEdit settings A Save button settings.wan_checkManage WAN management check settings A WAN Check tab
Permission Description Typical Gates audit.viewView audit logs A, RO Audit Logs page logs.viewView system logs (errors, RADIUS) A Logs page
The “users” table holds admin / reseller / support / collector accounts, distinct from subscribers.
Permission Description Typical Gates users.viewView / list users A Users page users.createCreate users A Add User users.editEdit users A Edit users.deleteDelete users A Delete
Permission Description Typical Gates communication.viewView communication rules A Communication Rules page communication.createCreate rules A Add Rule communication.editEdit rules A Edit communication.deleteDelete rules A Delete
Permission Description Typical Gates bandwidth.viewView bandwidth rules A Bandwidth Rules page bandwidth.createCreate rules A Add Rule bandwidth.editEdit rules A Edit bandwidth.deleteDelete rules A Delete
Permission Description Typical Gates fup.viewView FUP counters A, R FUP Counters page fup.resetReset FUP counters A, R Reset button
Permission Description Typical Gates sharing.viewView sharing detection results A Sharing Detection page sharing.scanRun a manual scan A Scan Now button sharing.settingsEdit sharing detection settings A Settings tab
Permission Description Typical Gates cdn.viewView CDN entries A CDN page cdn.createCreate CDN entries A Add CDN cdn.editEdit CDN entries A Edit cdn.deleteDelete CDN entries A Delete
Permission Description Typical Gates permissions.viewView permission groups A Permission Groups page permissions.createCreate permission groups A Add Group permissions.editEdit permission groups A Edit permissions.deleteDelete permission groups A Delete
Permission Description Typical Gates customers.self_change_planAllow reseller to enable customer self-service plan change A, R Customer Portal toggle
ProxPanel doesn’t ship preset groups out of the box — admins create them per deployment. The pattern recurring across customers:
subscribers.view, subscribers.create, subscribers.edit, subscribers.renew,
subscribers.add_days, subscribers.change_service, subscribers.reset_mac,
subscribers.reset_fup, subscribers.disconnect, subscribers.ping,
services.view, sessions.view, sessions.view_history,
invoices.view, invoices.create, invoices.print, invoices.mark_paid,
prepaid.view, prepaid.generate,
transactions.view, tickets.view, tickets.reply
subscribers.view, subscribers.view_password, subscribers.view_graph,
subscribers.view_logs, subscribers.edit, subscribers.reset_mac,
subscribers.reset_fup, subscribers.disconnect, subscribers.ping,
subscribers.bandwidth_rules,
services.view, sessions.view, sessions.disconnect, sessions.view_history,
tickets.view, tickets.create, tickets.reply, tickets.close,
subscribers.view, subscribers.ping,
invoices.view, invoices.print, invoices.email, invoices.mark_paid,
*.view, *.view_all, reports.*, audit.view
CREATE TABLE permissions (
name VARCHAR ( 100 ) NOT NULL UNIQUE ,
description VARCHAR ( 255 ),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
CREATE TABLE permission_groups (
name VARCHAR ( 100 ) NOT NULL UNIQUE ,
description VARCHAR ( 255 ),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
CREATE TABLE permission_group_permissions (
permission_group_id INTEGER REFERENCES permission_groups(id) ON DELETE CASCADE ,
permission_id INTEGER REFERENCES permissions (id) ON DELETE CASCADE ,
PRIMARY KEY (permission_group_id, permission_id)
Permissions are seeded at install time from INSERT ... ON CONFLICT (name) DO NOTHING statements in schema.sql. Adding a new permission requires the INSERT line plus a backend handler that calls RequirePermission("category.action").