All notable changes to Laravel Authentication Log will be documented in this file.
- Session restoration detection now uses
last_activity_atso continuously active sessions do not create duplicate login rows after the originallogin_atleaves the restoration window (#146) - Recent active legacy rows with a null
last_activity_atstill fall back tologin_atduring restoration detection
- Laravel 13.x support (#138, #140)
- Regression test covering applications that use immutable date casting
lastLoginAt(),lastSuccessfulLoginAt(), andpreviousLoginAt()now return\Carbon\CarbonInterfaceinstead of\Illuminate\Support\Carbon, fixing aTypeErrorin applications that cast model dates toCarbonImmutable— the default in the current Laravel starter kits (#137)- PHP 8.2+ is now required (PHP 8.1 is EOL, and no Laravel version supported by this package runs on it)
- Modernized the PHPUnit configuration for PHPUnit 10+ and updated the CI matrix (PHP 8.2–8.4, Laravel 11.x–13.x)
- The upgrade migration's
down()method now respects the configured table name (#135, #136)
- Suspicious activity detection with configurable thresholds
- Comprehensive session management (view, revoke sessions)
- Device fingerprinting with browser version normalization
- Device trust management (trust/untrust devices)
- Query scopes for filtering authentication logs (successful, failed, suspicious, trusted, active, etc.)
- Statistics and insights methods (getLoginStats, getTotalLogins, etc.)
- Rate limiting for notifications (prevent spam)
- Middleware for device trust (RequireTrustedDevice)
- Export functionality (CSV/JSON export command)
- Webhook support for authentication events
- Configurable new user threshold (prevent false positives)
- Session restoration prevention (fixes duplicate log entries from page refreshes)
- Arabic translation (ar.json)
- Enhanced notifications with Vonage support
- Issue #40: Browser version updates no longer trigger false "new device" notifications
- Issue #13: Session restorations no longer create duplicate log entries
- Dropped Laravel 10.x support (now only supports Laravel 11.x and 12.x)
- PHP 8.1+ required
- Config defaults now check for geoip function existence
- Improved device fingerprinting to normalize user agent strings
- PR #15: Notification after failed login on new device
- PR #52: Optimize Other Devices Logout Listener
- PR #57: Use null safe/chaining operator
- PR #80: Added PHPDocs for IDE autocompletion
- PR #85: Configurable new user threshold
- PR #92: Configurable listeners
- PR #94: Check trait implementation
- PR #100: Laravel 11 support
- PR #115: Check if geoip is installed
- PR #120: Laravel 12 support & Arabic translation
- PR #125: Test configuration updates
- PR #127: Spanish translation & blade fixes
- Laravel 12 Support
- Laravel 11 Support (#100)
- Add config listeners (#92)
- Use real user IP behind Cloudflare
- Check for AuthenticationLoggable trait on event (#94)
- Added PHPDocs to allow autocompletion in IDE (#80)
- Fixes the down method for php artisan migrate:rollback (#93)
- Laravel 10 Support - #70
- Use null safe/chaining operator - #57
- Optimize Other Devices Logout Listener - #52
- Laravel 9 Support
- Added latestAuthentication relationship - #24
- Fixed issue with PHP 7.4 - #22
- Fire a successful login after a failed login on an unknown (new) device. - #15
- Make the events the package is listening for configurable in the config file
- Added French translation and missing location translations - #18
- PHP 7.4 Support
- Logout listener bug fix - #10
- Known issues section to readme
- Ability to set DB connection type - #4
- Initial Release