rad-themes/client-portal
rad-themes/client-portal is a Laravel package that provides a customizable client portal theme with ready-to-use Blade views, routes, and UI components for building customer-facing dashboards and account areas.
Architecture fit: The package appears to be a Statamic addon for serving client-facing portals within a Laravel application. It fits teams already standardizing on Laravel + Statamic and needing client accounts, role separation, and portal views. The new hard requirement for Statamic Pro materially changes the architecture fit: this is not viable on Statamic Core alone because client accounts and a client role are part of the portal model.
Integration feasibility: Feasible for applications already on Statamic Pro; likely a small upgrade if the portal package is already installed. For Statamic Core-only environments, integration is blocked unless the team upgrades to Statamic Pro or selects a different portal implementation. The v1.1.1 security patch should be treated as a mandatory upgrade for any environment exposing client-supplied fields to staff-facing portal views.
Technical risk: The release fixes an XSS class issue where HTML in visitor-controlled plain-text fields—names, project status, phase/module titles, descriptions, button labels, file names, login heading/intro—could execute when staff viewed /portal. This implies prior versions are vulnerable where untrusted client registration or profile editing is enabled. Secondary risk is requirement drift: teams may have assumed Core compatibility, so licensing and role-model assumptions need validation before rollout.
Key questions:
Stack fit: Best fit is a Laravel application already using Statamic Pro with a clear separation between staff users and client portal users. The package aligns with Statamic’s content model and role/permission concepts, but the Pro requirement should be confirmed during technical discovery rather than treated as an optional license detail.
Migration path: For existing installs, prioritize upgrading to v1.1.1 as a security release. Validate that Statamic Pro is licensed and that client accounts and the client role are configured as expected. For new installs, begin with v1.1.1 only; do not baseline on earlier releases.
Compatibility: Confirm supported PHP, Laravel, and Statamic versions before scheduling work. Check whether existing templates or custom portal views override package-rendered fields; if so, audit those overrides for consistent escaping. Verify that local user roles, registration flows, and staff /portal access remain compatible with the Pro requirement.
Sequencing:
/portal with client-supplied HTML payloads in names and other plain-text fields.Maintenance: Low-to-moderate ongoing maintenance if the application stays within supported Laravel/Statamic versions. The Statamic Pro dependency adds license and upgrade coordination overhead. Security releases like v1.1.1 should be tracked with the same urgency as framework security patches.
Support: Support burden shifts toward licensing and role-configuration issues for teams that expected Core compatibility. Staff should know that client-supplied fields are untrusted input and that portal views must not render them as raw HTML. Document the Pro requirement clearly in internal runbooks.
Scaling: The portal model should scale with the underlying Laravel/Statamic stack; the release itself does not indicate performance changes. Scaling risk is primarily operational: more client accounts, role assignments, and portal content increase the need for access reviews and consistent permission hygiene.
Failure modes: Primary failure modes are deploying v1.1.1 without Statamic Pro and breaking client account/role functionality; missing custom template overrides that still render unescaped client input; incomplete regression testing of portal fields; and licensing surprises during upgrade. The previous XSS issue is the most important failure mode to close out.
Ramp-up: Teams familiar with Laravel and Statamic should ramp quickly. Teams new to Statamic Pro roles and client-account patterns need onboarding on permission boundaries and secure rendering of untrusted input. A short security-focused enablement session for staff who use /portal is warranted.
How can I help you explore Laravel packages today?