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

Iam Bundle Laravel Package

gdbots/iam-bundle

Identity and access management bundle for Laravel/PHP apps, integrating the Gdbots IAM service for authentication, user accounts, roles, and permissions. Provides configurable guards, middleware, and service bindings to wire IAM into your application quickly.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. gdbots/iam-bundle is not a standalone auth solution — it is a Symfony glue layer over Gdbots' event-sourced identity stack, and, as the v5.1.0 release reveals, over auth0/auth0-php as well. The lock-in surface is therefore three-deep: Symfony Security → Gdbots (PBJ messages, Curator, message buses, identity store) → Auth0 SDK. The v5.1.0 release is the first concrete evidence that an Auth0/Auth0-php contract is part of this bundle's supported surface, which was not visible in the prior assessment. That materially changes the architecture-fit story: the product is no longer "Gdbots-shaped or nothing" — it is "Gdbots-shaped and an Auth0/OIDC tenant consumer, or nothing." If our platform already standardizes on Auth0 (or generic OIDC via the Auth0 SDK), fit improves; if it does not, adopting this bundle now entails accepting an external identity vendor we have not otherwise committed to. That is a platform decision, not a package decision.

Integration feasibility. Feasibility for an existing Symfony app is unchanged in shape but reduced in the specific: a UserProviderInterface bridge, an event-stream backfill, and a dual-read window still apply, but the bridge now additionally requires a configured Auth0 tenant (or an alternative OIDC issuer compatible with auth0-php), credentials handling, and a decision on where token validation lives (Symfony firewall vs. SDK). The v5.1.0 release note — "Requires hard coded reference to guzzle as auto discovery of psr-17 client is not working when auto discovery is disabled for security reasons" — is both a feasibility clue and a feasibility risk: it means the package supports a security-hardened (discovery-disabled) mode, but only by internally hard-coding Guzzle. Our Guzzle version constraint must be made compatible with theirs before we can even run the spike to completion. The 0-dependents / 0-stars profile remains the headline concern; v5.1.0 does not change that.

Technical risk.

  • Bus factor / governance: unchanged — one organization, no visible external contributors. Apache-2.0 permits forking, which remains the primary mitigation.
  • Dependency depth (revised): the stack is now Symfony + Gdbots + auth0/auth0-php 9.x + Guzzle. Four moving parts with independent release cadences.
  • Semver hygiene: v5.1.0 — a minor version — is shipped with a __POSSIBLE BREAKING CHANGES__ header. A project that treats "possible breaking changes" as a minor bump forces consumers to pin exact versions and read changelogs, and raises the question of whether major bumps will be reserved for actual behavior changes or merely for dependency-major alignments. This is a process risk independent of the code.
  • Hard-coded Guzzle: the workaround trades PSR-17 auto-discovery (disabled for security) for a Guzzle pin inside the bundle. That means Guzzle upgrades are effectively gated on this package's release cadence; a Guzzle CVE could leave us pinned to an outdated version until upstream ships. It also reduces substitutability — a client that wanted to supply its own HTTP client cannot, in the hardened path.
  • Auth0 SDK major-alignment risk: the release is specifically "work with auth0/auth0-php version 9.x," implying an 8.x → 9.x migration was necessary. The SDK's history shows periodic majors (v7 → v8 → v9); expect one to two forced alignment events per year, each of which is a likely breaking change for this bundle. Budget for it.
  • Symfony Security churn: unchanged; confirm supported Symfony majors against CI, not documentation.
  • Auth0 tenant / OIDC contract: if Auth0 is required at runtime (not just the SDK in generic OIDC mode), we inherit Auth0's pricing, SLA, and regional availability. That is a new external dependency for a Tier-0 auth path.
  • Eventual consistency: unchanged — projection-based roles still mean administrative intent may lag authorization decisions.

Key questions (revised).

  1. Which Symfony and PHP versions are supported and tested in CI? Is there a support matrix?
  2. What backing stores does gdbots/iam require, and are those already in our platform?
  3. What is the role of auth0/auth0-php in this bundle? Is it required at runtime, is it Auth0-tenant-specific or usable against any OIDC issuer, and what configuration is required for the "auto-discovery disabled" hardened mode?
  4. What is the exact Guzzle constraint the hard-coded client imposes? Does it conflict with the Guzzle version used elsewhere in our platform?
  5. Does the maintainer intend semver discipline going forward? Why is a "possible breaking changes" release published as 5.1.0 rather than 6.0.0?
  6. Does the bundle ship user providers and authenticators for our actual login methods (session, token, OAuth/OIDC, API keys), and is OIDC via auth0-php the only OAuth path?
  7. Who maintains it, what is the release cadence, and is there a documented security-response process?
  8. How are roles and permissions modeled, and how do they map to our existing authorization taxonomy?
  9. What is the read path latency for an authorization check, and is there a caching layer?
  10. Has anyone outside the originating organization deployed this in production?

Integration Approach

Stack fit (revised). Assume Symfony 6/7 on PHP 8.1+, the Gdbots PBJ/Curator/message-bus stack, auth0/auth0-php 9.x, Guzzle, and an event-sourced identity domain. The TPM framing must now be: this bundle is a package only if we are already (a) a Gdbots shop and (b) comfortable with an Auth0/OIDC dependency. If (b) is not true, the release note is the clearest possible signal that v5.1.0 is not our upgrade path.

Migration path. Four realistic paths, all narrower than before:

  • Greenfield Gdbots-native service with existing Auth0 tenant: direct adoption; lowest friction; the Auth0 integration is a feature rather than a liability.
  • Greenfield Gdbots-native service without Auth0: requires standing up an Auth0 tenant (or a compatible OIDC issuer) before the bundle can authenticate anyone. This is now an explicit pre-step, not a footnote.
  • Existing Symfony app with Doctrine users: build a compatibility layer (UserProvider, one-time backfill, dual-read window) plus Auth0 configuration and credential lifecycle management.
  • Evaluate-and-reject: run a two-week spike; if either the Gdbots storage/consistency model or the Auth0 SDK contract does not fit our operational reality, stop early.

Compatibility (revised — this is the crux of v5.1.0).

  • Pin exactly. Pin gdbots/iam-bundle, gdbots/iam, auth0/auth0-php, and Guzzle to exact versions. The combination that is known-good upstream is a single tuple, and the changelog gives us no wider matrix.
  • Guzzle conflict audit before the spike. Run composer why guzzlehttp/guzzle across our existing services. If any service already depends on a Guzzle major that the bundle's hard-coded reference does not accept, that service is effectively excluded from adoption until the bundle ships a fix.
  • PSR-17 discovery posture. If our security policy disables PHP-HTTP auto-discovery (as upstream's does), we inherit the hard-coded Guzzle path and, with it, the constraint. Document this explicitly: we are not choosing Guzzle, we are accepting the bundle's choice.
  • Semver guardrail. Because 5.1.0 is a minor release with a "possible breaking changes" header, our dependency policy must treat any minor bump of this package as potentially breaking — read the changelog, run the contract tests, pin exact, no caret ranges.
  • Auth0 SDK upgrade rehearsal. Before committing, dry-run an 8.x → 9.x style alignment to estimate effort and blast radius. If that rehearsal exceeds the spike budget, price the recurring cost into the adoption decision.

Sequencing.

  1. Dependency audit (2–3 days, new first step): composer resolution against our existing Guzzle and Symfony constraints; confirm auth0/auth0-php 9.x can coexist with our other packages. Output: go/no-go on resolvability, before any code is written.
  2. Spike (1–2 weeks): throwaway Symfony app, wire the bundle in the hardened (auto-discovery-disabled) mode, authenticate a user via Auth0 (or compatible OIDC issuer), enforce one role. Output: go/no-go, written risk register, internal documentation.
  3. Authorization model design: map Symfony roles/voters to our permission taxonomy.
  4. Non-critical path pilot: one internal service or admin surface.
  5. Data migration and dual-read window for existing user stores.
  6. Cutover of a customer-facing surface with a documented rollback.
  7. Decommission legacy auth after a full quarter of stability.

The new step 1 is deliberate: v5.1.0 means dependency resolution can kill the project before the spike even starts. Find that out cheaply.

Operational Impact

Maintenance (revised). The maintenance surface has widened. We now inherit: Symfony Security churn, Gdbots churn, auth0/auth0-php majors (7 → 8 → 9 observed), and a hard-coded Guzzle pin. Budget for:

  • Quarterly dependency review covering all three upstream trees plus Guzzle.
  • A vendored fork or patch set — the hard-coded Guzzle reference is the first thing we would want to patch if a Guzzle CVE lands and the bundle is slow to release.
  • At least one engineer who can read both the parent library's source and the Auth0 SDK's source.
  • Contract tests that exercise the auth flow end-to-end, since upstream testing is opaque and semver is unreliable.

Apache-2.0 makes forking legally clean but not free; a fork of auth code accrues CVE-response obligations we would otherwise outsource to a vendor.

Support. No community support channel of consequence; GitHub issues to a low-traffic repo. The "possible breaking changes in a minor release" signal suggests the maintainer's consumer base is small enough that semver discipline is not exercised. For a Tier-0 auth dependency, this means: assume we own first-line support, define an internal escalation owner before production cutover, and do not plan on the vendor or the community responding within an SLA. If we are on Auth0, we additionally have Auth0 support — but only for the Auth0 layers, not for this bundle's wiring.

Scaling. Unchanged in shape: authorization is a hot path hit on nearly every request; without caching, latency and Auth0 API call volume (if the SDK is invoked per-request rather than per-session) scale linearly with traffic. New requirements to add to the validation list:

  • Confirm whether the auth0-php SDK is exercised per-request or per-session/token-introspection only; the cost profile is very different.
  • Confirm whether Auth0 tenant rate limits become a ceiling on our throughput during peak login/refresh events.
  • Confirm that the hard-coded Guzzle client uses connection pooling/keep-alive compatible with our traffic profile.
  • Session/token invalidation semantics under load must be tested explicitly (unchanged).

Failure modes (revised).

  • Auth-store outage = total product outage. Unchanged; Tier-0 classification unchanged.
  • Auth0 tenant outage = total product outage (new). With v5.1.0, the external blast radius now includes Auth0 (or our OIDC issuer). Multi-region and failover characteristics of the identity provider must be validated independently of this bundle.
  • Hard-coded Guzzle blocks a security patch (new). If Guzzle ships a CVE fix and the bundle's pin lags, we have to fork to ship. Plan for it in the runbook.
  • Minor version carries breaking change (new). Because 5.1.0 is a minor, our dependency tooling that allows ^5.x will silently accept future breakage. Change policy to exact pins for this package.
  • Eventual consistency on role changes. Unchanged — define staleness window and test revocation end-to-end.
  • Upstream abandonment. Unchanged, exacerbated: the maintenance surface now includes an Auth0 SDK alignment obligation that is unlikely to be maintained by anyone else.
  • Silent authorization failure / fail-open configuration. Unchanged; audit firewall settings explicitly. The auto-discovery-disabled path narrows one failure class (client injection) at the cost of another (rigid Guzzle dependency).

Ramp-up (revised). Steeper than before. Engineers must now be fluent in three idioms: Symfony Security (firewall/authenticator/voter), Gdbots event-sourcing/PBJ, and the Auth0 SDK / OIDC flow (including the security-hardened auto-discovery-disabled configuration). Plan for three-to-five weeks per engineer; do not staff with someone strong in only one or two of the three. The spike's most important deliverable is now internal documentation covering all three layers — that artifact is what makes the second and third engineer productive, especially given how little public documentation exists for the bundle itself.

TPM recommendation (revised). The v5.1.0 release is informative in exactly the way that should move the decision needle: it (a) confirms an auth0/auth0-php dependency that prior assessments did not have visibility into, (b) introduces a hard-coded Guzzle workaround that constrains downstream resolution, and (c) publishes "possible breaking changes" under a minor version number. None of these are disqualifying on their own, but together they refine the package's identity: it is a competent internal integration for an organization already committed to Gdbots and Auth0, maintained to that organization's timeline and semver conventions, not a general-purpose Symfony auth bundle. If we are both, keep it on the shortlist and run the dependency audit before the spike. If we are Gdbots-only and not Auth0 — or neither — treat v5.1.0 as further evidence to adopt the pattern (wire identity into Symfony via a provider and voter) rather than the package.

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.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route