pmochine/laravel-nova-hashids
Integrates Hashids with Laravel Nova so resource IDs are obfuscated in URLs and API responses. Hide sequential primary keys, prevent ID enumeration, and keep Nova links cleaner without changing your schema. Supports custom salts, minimum hash lengths, and easy configuration.
nova middleware group has not authenticated users since Nova 4), so a guest could enumerate configured connections and encode/decode IDs. v3 adds Nova's Authenticate and Authorize middleware. This is the single strongest input to a "patch now vs. schedule" decision, and it should be triaged as a security advisory rather than a routine version bump.vinkla/hashids 13/14, and Composer will not co-install with Nova 3 or 4. Adopting this package version is therefore a forcing function on the platform upgrade path — sequence it inside a Nova 5 / Laravel 12+ migration, not as a standalone task.Contracts\Converter) for custom hash algorithms. Default position: buy/adopt; revisit only if the upgrade path collides with a Nova version you cannot leave.main.salt, no HTTP 500 on invalid input, single-ID-only conversion, correct string handling of large IDs, leading-zero/GMP octal fix) also close a set of input-handling defects that could have produced noisy errors and misleading results in support workflows.Consider adoption when:
Authenticate/Authorize and the viewNova gate is the right shape for this.Contracts\Converter binding lets you swap the algorithm without forking the package.Look elsewhere when:
vinkla/hashids directly for application logic.connection() and warns if it is missing; that is a configuration convenience, not a tenancy model.To executives: This is a small, free, internal admin tool for Nova that lets support and on-call staff turn opaque hashids back into real record IDs when debugging customer issues. The headline is not the features — it is that the previous version, when run on current Nova, let unauthenticated visitors list our configured connections and encode or decode IDs. Version 3 closes that hole by putting the card behind Nova's own login and authorization checks. The cost is not a licence; it is engineering time, and that time is largely already spent because v3 only installs on Nova 5 / Laravel 12+, which we need to be on anyway. Recommendation: fold this into the Nova 5 upgrade rather than run it as a separate project, and treat the exposure window on v2 as something to review.
To engineering: v3 is a rebuild for Nova 5 — Vue 3 component built with Laravel Mix 6 and laravel/nova-devtool, Vue 2 components and the Sass file removed. The upgrade is mechanically small but has real gates: hard requirements on Nova 5, Laravel 12/13, PHP 8.2+, and vinkla/hashids 13/14; Composer will not co-install with Nova 3 or 4. The card's internal API changed (selected → connection in requests, new response fields), but the card is the only consumer, so there is no external contract to coordinate. If you added an array_has() shim for issue #2 you can drop it, and you must re-run php artisan route:cache if routes are cached. The important behavioural changes are all defensive: routes now carry Authenticate and Authorize, only configured connection names are accepted, invalid or multi-number hashids return a message instead of a 500, IDs are sent as strings so large values keep every digit, and leading zeros no longer get read as octal by GMP. The package now ships PHPUnit and Vitest suites plus a GitHub Actions workflow, which materially lowers the review burden — read the diff, pin the version, and confirm the viewNova gate matches who you intend to have access.
How can I help you explore Laravel packages today?