Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Accent Bundle Laravel Package

theodo/accent-bundle

A small Symfony bundle from Theodo for handling accented characters in PHP applications. It provides utilities to strip or convert diacritics, useful for generating clean slugs, URLs, and search-friendly text.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — double mismatch, flag first. v3.1.0 confirms and sharpens what the prior assessment inferred: theodo/accent-bundle is not merely a Symfony bundle, it is a Symfony bundle scoped to API Platform. The release is entirely about which API Platform package is installed (api-platform/core vs api-platform/symfony), refuses to run without one, and actively blocks api-platform/core when it is pulled in as a dependency. Laravel has no bundle contract and no API Platform equivalent, so there are now two independent reasons nothing will execute: no bundle registration/compiler pass, and no API Platform resource graph to analyze. The package's value is the methodology — static verification that every API operation is covered by an access-control rule — not the code. That methodology is narrower than previously recorded: it is API-Platform-operation coverage, not generic route coverage. Treat it as a design reference only, and only for teams on the Symfony + API Platform stack.

Correction to prior scope. The earlier assessment described the value as general "every route covered by an access-control rule" checking. v3.1.0 makes clear the unit of analysis is the API Platform operation (resource/operation metadata), not the Symfony router. This reduces what is transferable to Laravel: the reusable semantics are the finding taxonomy and the CI gate shape, not the enumeration logic. Our internal build estimate is unchanged (5–10 dev days) but the borrowable surface is smaller — plan to design the Laravel route/gate enumeration from scratch.

Integration feasibility.

  • Symfony + API Platform target: straightforward and now better supported — register the bundle, confirm which API Platform package is in the tree, run the command, wire into CI. Low effort (1–2 days). v3.1.0's early explicit failure on a missing/unsupported API Platform package is a genuine DX improvement that removes a whole class of "green but did nothing" outcomes.
  • Symfony without API Platform: now fails fast by design. Not a defect, but it hard-excludes this tool from any Symfony service that doesn't use API Platform.
  • Laravel target: still a full port with ~zero reusable PHP. If anything, less reusable than assessed before.

Technical risk.

  • Ecosystem signal remains weak: single-vendor ownership (Theodo), minimal dependents, bus factor 1–2. Two releases (v3.0.0 → v3.1.0) suggest the project is alive, which modestly improves the dormancy concern; it does not improve the validation concern.
  • Dependency-graph risk is new and material. "Installation of api-platform/core is now prevented" is a Composer-level conflict/replace behavior — a package that constrains its siblings' resolution can break composer update in a monorepo or in a service with transitive API Platform dependencies. This is a semver-questionable change for a minor version: it alters install outcomes, not just runtime behavior. Pin exactly and test the resolver before rollout.
  • Security-tooling risk is asymmetric (unchanged): a false negative ("operation is protected") creates false confidence in an auth-coverage audit, which is a compliance liability if we cite it in SOC 2 or pentest-remediation evidence. A false positive is merely annoying.
  • Coupling: Symfony/PHP version matrix, API Platform version matrix (now two supported packages, each with its own compatibility envelope), YAML-config-centric semantics, and limited support for attribute-based rules or vendor-injected operations.

Key questions for the team.

  1. Does our estate run Symfony at all — and specifically, does any service use API Platform? If no on both, this is a closed question.
  2. If yes, which package: api-platform/core or api-platform/symfony? That choice now determines whether the bundle installs cleanly or conflicts.
  3. What is the driving requirement — audit evidence, pentest finding closure, or developer guardrails? This changes build-vs-adopt.
  4. Do we need static reporting (CI artifact) or runtime enforcement? The bundle is the former.
  5. Who owns the checker after adoption — platform or security engineering?
  6. Does the command exit non-zero on findings, and does v3.1.0's early-failure path also exit non-zero (CI-gate viability)?
  7. Will the composer conflict behavior interfere with our existing dependency graph or shared Symfony skeleton?

Recommendation: Do not adopt as a Laravel dependency — v3.1.0 reinforces this by narrowing the tool to API Platform. If we have a Symfony + API Platform service, this is now a viable 1–2 day pilot rather than a curiosity. For Laravel, budget a 1–2 day spike to read the checking logic and borrow its finding taxonomy, then build internally.

Integration Approach

Stack fit. Greenfield for Laravel. The port needs three pieces: (a) a route enumerator resolving effective middleware including group inheritance and Route::middleware() chaining; (b) an authorization resolver inspecting Gate::define, Policy auto-discovery, authorizeResource, and controller authorize() calls; (c) an artisan command emitting a machine-readable report plus a non-zero exit code. Note the equivalent of API Platform's operation metadata does not exist in Laravel — route + middleware + gate is the closest analog, so do not attempt a literal semantic port.

Migration path. No incremental migration for Laravel — nothing is deployed, so this is a build decision. The conceptual lift is now narrower: adopt the bundle's finding taxonomy and CI-gate shape, not its enumeration model.

Compatibility.

  • Symfony path: verify three matrices before committing — Symfony/PHP, API Platform package (core vs symfony) and its version, and config format (YAML vs attributes). Run composer update --dry-run in a representative skeleton to confirm the new conflict rule doesn't break resolution.
  • Laravel path: target PHP 8.2+, Laravel 10/11, and handle API routes, invokable controllers, Route::resource expansion, and route-level can: middleware.

Sequencing.

  1. Qualify (half day): confirm whether any service in the estate uses API Platform, and which package. If none, stop and archive.
  2. Spike (1–2 days, Symfony only): install v3.1.0 in a branch, verify resolver behavior, run against a sample app, capture rule set and output schema.
  3. Build v1 (internal, report-only): route + gate enumerator for Laravel, JSON/table output, no CI gate.
  4. Baseline (1 sprint): run across the Laravel app, triage findings, quantify uncovered routes.
  5. Ratchet, not block: fail CI only on newly added uncovered routes.
  6. Enforce: full-coverage gate once backlog is burned down and false-positive rate is measured below an agreed threshold.

Operational Impact

Maintenance. Adopting the bundle means owning a fork the moment we patch it — and for a security control, we will patch it. Version-pin exactly (particularly given the composer conflict change in a minor release), vendor the diff, and assume upstream is dormant between releases. Internal build is more code but far less ownership ambiguity. Upstream is demonstrably active, which reduces — but does not remove — the dormancy assumption.

Support. Community-only, GitHub issues, no SLA, no visible CVE process. For a tool whose output feeds compliance evidence, "no support contract" is a governance finding to document and accept explicitly. Add a note that the project's supported-dependency policy changes between minor versions without a major bump.

Scaling. Favorable and unchanged — it is CI-time static analysis, not a runtime dependency. No production latency, no request-path blast radius, cost scales linearly with operation/route count. Still the strongest argument for building some checker.

Failure modes to instrument.

  • False negative: dynamic middleware, Route::resource expansions, package-injected routes, or sub-requests misclassified as protected → silent auth gap. Mitigate with a fixture suite of known-unprotected routes.
  • Silent no-op (now partially addressed upstream): v3.1.0's early failure on a missing API Platform package is good practice; mirror it in our internal tool — fail loudly if zero routes are parsed.
  • Silent skip: config/route parse failure exiting 0. Mandate a "routes scanned" count and assert it against route:list.
  • Dependency conflict: the new block on api-platform/core breaking a shared Symfony skeleton or monorepo resolution. Test the resolver in CI before rollout; keep a rollback pin.
  • Drift: checker falls out of sync with a Laravel upgrade and stops resolving gates → green CI, no coverage. Pin a smoke assertion.
  • Alert fatigue: high false-positive volume leading teams to suppress the gate entirely — plan the ratchet up front.

Ramp-up. Low conceptual ramp (one paragraph: "every route must map to an authorization decision"). For a Symfony + API Platform team, hours — and v3.1.0's explicit failure message makes the initial install self-explanatory. For a Laravel team, the concept transfers immediately but the tool does not; onboard developers on the internal command's output format and publish the finding taxonomy so triage is consistent across teams.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource