deyvo / auth
Auth package for Deyvo Laravel applications
Requires
- php: ^8.2
- bacon/bacon-qr-code: ^3.0
- illuminate/auth: ^12.0
- illuminate/contracts: ^12.0
- illuminate/database: ^12.0
- illuminate/encryption: ^12.0
- illuminate/hashing: ^12.0
- illuminate/http: ^12.0
- illuminate/notifications: ^12.0
- illuminate/routing: ^12.0
- illuminate/session: ^12.0
- illuminate/support: ^12.0
- illuminate/validation: ^12.0
- illuminate/view: ^12.0
Requires (Dev)
- orchestra/testbench: ^10.11
README
deyvo/auth is de package-vriendelijke auth-laag voor Deyvo Laravel-applicaties. De package levert routes, controllers, validatie, Blade-views, migrations, MFA, recovery codes, sessiebeveiliging en audit-hooks zonder hostbestanden te overschrijven.
Installatie
composer require deyvo/auth php artisan vendor:publish --tag=deyvo-auth-config php artisan vendor:publish --tag=deyvo-auth-views php artisan migrate
De publieke auth-routes staan standaard onder /auth en gebruiken Laravel-standaardnamen zoals login, logout, password.request, verification.notice en password.confirm.
Belangrijke .env-waarden:
DEYVO_AUTH_ENABLED=true DEYVO_AUTH_ROUTES_ENABLED=true DEYVO_AUTH_PATH=auth DEYVO_AUTH_REGISTRATION_ENABLED=false DEYVO_AUTH_EMAIL_VERIFICATION_REQUIRED=false DEYVO_AUTH_MFA_REQUIRED_FOR_DASHBOARD=false DEYVO_DASHBOARD_PATH=dashboard
Wachtwoordbeleid
De package gebruikt een NIST/OWASP-vriendelijk beleid:
- minimaal 15 tekens wanneer een wachtwoord single-factor kan zijn;
- minimaal 8 tekens alleen wanneer MFA voor die context verplicht is;
- minimaal 64 tekens worden geaccepteerd; standaard maximum is 128;
- spaties en Unicode zijn toegestaan;
- geen verplichte hoofdletters, cijfers of symbolen;
- geen stille truncation;
- veelgebruikte en contextuele wachtwoorden worden geweigerd;
- optionele Have I Been Pwned k-anonymity check via
DEYVO_AUTH_PASSWORD_BREACHED_CHECK_ENABLED.
Hashing loopt via Laravel Hash, zodat hosts Argon2id kunnen afdwingen via hun normale Laravel hashconfig.
MFA
MFA is opgezet als factor-systeem. De eerste methode is TOTP:
- secret wordt pas opgeslagen na een geldige TOTP-code;
- recovery codes worden eenmalig getoond en alleen gehashed opgeslagen;
- recovery codes zijn single-use;
- MFA uitschakelen vereist recent bevestigde password confirmation plus een actieve MFA/recovery-code;
DEYVO_AUTH_MFA_REQUIRED_FOR_DASHBOARD=truedwingt setup en challenge af voor dashboardroutes.
De package gebruikt geen SMS als standaard. WebAuthn/passkeys kunnen later als extra factor-type naast totp worden toegevoegd.
Views
Publieke auth-views renderen standaard in een standalone package-layout. Daardoor verschijnen login, password reset en MFA setup niet binnen de normale website-header en footer.
Een host kan expliciet kiezen om auth-views toch in de website-layout te tonen:
'views' => [ 'public_layout' => 'layout.app', 'public_layout_section' => 'content', ],
Of via .env:
DEYVO_AUTH_PUBLIC_LAYOUT=layout.app DEYVO_AUTH_PUBLIC_LAYOUT_SECTION=content
Dashboard security gebruikt deyvo::dashboard.layout wanneer deyvo/core aanwezig is en valt anders terug op een minimale package-layout.
Audit
Auth-events worden via Deyvo\Auth\Support\AuthAuditLogger opgenomen. Als Deyvo\Core\Support\AuditLogger beschikbaar en gebonden is, gebruikt Auth die automatisch. Anders schrijft de package een veilige logregel via Laravel Log.
De logger bewaart geen wachtwoorden, OTP's, TOTP-secrets, reset tokens of recovery codes.
Releases
De GitHub Actions workflow maakt op main automatisch een tag en GitHub Release op basis van Conventional Commits:
fix:verhoogt de patchversie, bijvoorbeeldv0.0.0naarv0.0.1;feat:verhoogt de minorversie, bijvoorbeeldv0.0.0naarv0.1.0;feat!:ofBREAKING CHANGE:verhoogt de majorversie, bijvoorbeeldv0.1.0naarv1.0.0;- commits zonder release-prefix, zoals
docs:ofchore:, maken geen release.
Tests
composer test