betterauth/multimodal-php
Framework-agnostic PHP authentication with session, Paseto V4 token, or hybrid modes. Includes OAuth social login, OpenID Connect, magic links, TOTP 2FA, risk-based session scoring, multi-tenancy, plugins, and PDO storage.
betterauth/symfony-bundle v1. The real product decision is (a) managed identity provider, (b) Laravel-native stack, or (c) the successor bundle if you're a Symfony shop — and the deprecation itself is the strongest available datapoint on single-maintainer dependency risk.betterauth/symfony-bundle v1 is the maintained home for this core. It's worth a look when you are a PHP 8.2+ / Symfony shop, want self-hosted auth with no per-MAU bill, specifically want Paseto rather than JWT, and have appetite for a young, single-maintainer project where you may become the de facto maintainer.completeTwoFactorLogin() signature change, RateLimiter now requiring a shared PSR-6 cache).For executives (one paragraph): Authentication is commodity infrastructure with a permanent security-maintenance cost, and this package proves the scope is large but the market for another self-hosted PHP auth library is thin. The specific library is deprecated and archived, superseded by a Symfony bundle, with a single maintainer and no downstream users — so I'm not recommending adoption. I'm recommending we use its capability list as our requirements baseline and pick a route: a managed identity provider for speed and compliance coverage, or Laravel's native auth stack if we want zero vendor spend and accept owning the security surface. The one strategic item worth protecting in whichever route we choose is OIDC provider mode, because that's what unlocks enterprise SSO deals later.
For engineering (the ask): Don't adopt this artifact. DO use it as a checklist when we evaluate the alternatives — session + stateless token + hybrid in one config; Paseto V4 local encryption over JWT if we care about token opacity; Argon2id with opportunistic rehash; atomic refresh-token rotation with reuse detection that revokes the family; timing-safe anti-enumeration on both login and password reset; mandatory PKCE S256 for public OIDC clients; TOTP with anti-replay and rate limiting that fails loud rather than silently no-op'ing; and a documented risk-scoring model with explicit allow / log / reauth / terminate thresholds. If a candidate can't answer those, it's not cheaper — it's deferred work.
What would change the recommendation: the successor bundle shipping a maintained Laravel integration with Postgres support and more than one active maintainer. Failing that, this stays a reference document, not a dependency — and I'd rather spend the integration budget on a route with a support contract than on re-implementing 28 storage interfaces.
How can I help you explore Laravel packages today?