anwarelbo / laravel-authentication-log
Laravel Authentication Log provides authentication logger and notification for Laravel.
Requires
- php: >=7.0
- illuminate/auth: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/bus: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/console: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/contracts: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/http: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/notifications: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^3.5|^4.0|^5.0
- phpunit/phpunit: ^6.0|^7.0|^8.0
Suggests
- guzzlehttp/guzzle: Required to use the Slack transport (~6.0)
- nexmo/client: Required to use the Nexmo transport (~1.0).
README
Installation
Laravel Authentication Log requires Laravel 5.5 or higher, and PHP 7.0+.
You may use Composer to install Laravel Authentication Log into your Laravel project:
composer require yadahan/laravel-authentication-log
Configuration
After installing the Laravel Authentication Log, publish its config, migration and view, using the vendor:publish
Artisan command:
php artisan vendor:publish --provider="Yadahan\AuthenticationLog\AuthenticationLogServiceProvider"
Next, you need to migrate your database. The Laravel Authentication Log migration will create the table your application needs to store authentication logs:
php artisan migrate
Finally, add the AuthenticationLogable
and Notifiable
traits to your authenticatable model (by default, App\User
model). These traits provides various methods to allow you to get common authentication log data, such as last login time, last login IP address, and set the channels to notify the user when login from a new device:
use Illuminate\Notifications\Notifiable; use Yadahan\AuthenticationLog\AuthenticationLogable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable, AuthenticationLogable; }
Basic Usage
Get all authentication logs for the user:
User::find(1)->authentications;
Get the user last login info:
User::find(1)->lastLoginAt(); User::find(1)->lastLoginIp();
Get the user previous login time & ip address (ignoring the current login):
auth()->user()->previousLoginAt(); auth()->user()->previousLoginIp();
Notify login from a new device
Notifications may be sent on the mail
, nexmo
, and slack
channels. By default notify via email.
You may define notifyAuthenticationLogVia
method to determine which channels the notification should be delivered on:
/** * The Authentication Log notifications delivery channels. * * @return array */ public function notifyAuthenticationLogVia() { return ['nexmo', 'mail', 'slack']; }
Of course you can disable notification by set the notify
option in your config/authentication-log.php
configuration file to false
:
'notify' => env('AUTHENTICATION_LOG_NOTIFY', false),
Clear old logs
You may clear the old authentication log records using the authentication-log:clear
Artisan command:
php artisan authentication-log:clear
Records that is older than the number of days specified in the older
option in your config/authentication-log.php
will be deleted:
'older' => 365,
Contributing
Thank you for considering contributing to the Laravel Authentication Log.
License
Laravel Authentication Log is open-sourced software licensed under the MIT license.