Customer Portal — Production Guide
Licensing
- Catalog slug:
customer-portal - Category:
operations, free Marketplace opt-in is_default_included = false,is_billable = false, version 1.0.0- Hard dependency:
contacts(module_dependencies) - Soft sections: invoices, payments, quotations, contracts, help-desk
Bootstrap
- Migrate catalog registration, permissions,
portal_users, password-reset tokens, Help Deskportal_user_id(help-desk → 1.13.0) - Install Contacts then Customer Portal from Marketplace (dependency resolver enforces Contacts)
- Grant
customer-portal.*via permission migration / default role maps — do not re-seed roles
Deploy checklist
php artisan migrate --force(nodb:seedon production upgrades)- Confirm
portal-apiguard +portal_usersprovider inconfig/auth.phpare deployed - Deploy Frontend with
/#/portal/*routes and staff/customer-portal - Smoke: install Contacts + Customer Portal → invite Contact with email → accept invite → login → open invoice PDF (if Invoices entitled) → create Help Desk ticket (if Help Desk entitled)
- Smoke: disable portal user → login fails; enable → login works
- Smoke: document without contact/company does not appear in portal lists
Monitoring
- Mail: portal invite + password reset notifications
- Auth throttles on portal login / invite / reset /
POST /api/central/v1/public/portal-workspaces - Platform audit: follow existing tenant login patterns if extended later