uvdesk/support-center-bundle
Symfony bundle that adds a customer-facing support center to the UVdesk helpdesk. Customers can browse knowledge base articles, submit and track support tickets, and manage their accounts through a customizable self-service portal.
v1.1.3.3 is a drop-in upgrade with no documented breaking changes, but it contains a security fix — treat the bump as mandatory rather than optional. Because it ships a "fixed vulnerability / broken security issue," schedule the upgrade as a patch release, not a bundled-with-feature-work release.
Minimal steps:
composer require uvdesk/support-center-bundle:^1.1.3.3 (or bump the constraint in composer.json and composer update uvdesk/support-center-bundle).php artisan config:clear && php artisan view:clear && php artisan cache:clear. If you front this bundle through a Symfony kernel (it is a Symfony bundle at heart — UVdesk core, not native Laravel), also run bin/console cache:clear and re-publish assets so the updated theme/brand colors and marketing SVG actually land on disk.CHANGELOG-1.1.md (linked in the notes) and the updated README.md. The README is the only place the new public link feature is likely documented end-to-end, since there's no dedicated docs link in the release.DependencyInjection/Configuration.php + settings entity) before assuming you can override it in .env.First use case: enable guest-accessible ticket links so customers can view a ticket thread without logging in — useful for embedding status in transactional emails, or for a "view your request" link after a webhook-driven ticket creation.
Public links as an email/notification primitive. The high-value pattern is generating the public URL at ticket-creation and ticket-reply time and appending it to your outbound mail. This removes the "create an account to see your ticket" drop-off that support portals usually suffer from. Keep the link generation in one service/helper so expiry changes propagate everywhere at once.
Set expiry globally, not ad hoc. Configure the access window once in settings (e.g. 24h–7d depending on your data sensitivity) and let every generated link inherit it. Shorter windows for tickets containing PII, longer for low-sensitivity status pages. Don't hand-roll per-ticket expiry unless the bundle exposes it — assume the setting is global until you verify otherwise.
Treat the public route as an unauthenticated surface. Since the whole point is "no customer login," the link is effectively a bearer token in a URL. Patterns that hold up:
Referrer-Policy: no-referrer on pages that render the link.<a href> over third-party embeds that leak the referrer.ticket_url column), encrypt it at rest or regenerate on demand.Announcement section as a config-driven marketing slot. The release reworks the marketing announcement UI and SVG. If you were previously hardcoding a banner partial or CSS override to style it, delete that override and use the shipped section — otherwise the updated default theme and brand colors will fight your custom CSS. Wire it through the admin setting rather than a Blade/Twig override so future releases don't break it.
Attachment zip download. The large-attachment zip fix matters if agents bulk-download ticket attachments. If you proxy that download through your own controller, mirror the fix's intent: stream with readfile/chunked output rather than loading into memory, and raise memory_limit / max_execution_time only where needed. Test with a ticket holding several multi-MB files before you consider the upgrade verified.
Theme/color changes. Update brand colors in the admin settings after upgrading rather than patching CSS — the admin logo color now derives from the dynamic banner background, so a hardcoded logo color will look wrong against a changed banner.
proxy_read_timeout, fastcgi_read_timeout) become the new failure mode for very large archives.How can I help you explore Laravel packages today?