ashikkaiser/laravel-auth-log

Laravel Auth Log 为 Laravel 提供认证日志和通知功能。

v1.0.0 2022-06-28 11:45 UTC

This package is auto-updated.

Last update: 2024-09-28 17:07:19 UTC


README

Build Status StyleCI

Laravel Auth Log 是一个用于自动记录用户所有登录的软件包。它还可以在从未知设备成功登录时发送通知。

此软件包是https://github.com/yadahan/laravel-authentication-log的修改和扩展版本。

安装

Laravel Auth Log 需要 Laravel 5.8 或更高版本,以及 PHP 7.2+。

您可以使用 Composer 将 Laravel Auth Log 安装到您的 Laravel 项目中

composer require ashikkaiser/laravel-auth-log

配置

安装 Laravel Auth Log 后,使用 Artisan 命令 vendor:publish 发布其配置、迁移和视图

php artisan vendor:publish --provider="AshikKaiser\AuthLog\AuthLogServiceProvider"

接下来,您需要迁移您的数据库。Laravel Auth Log 迁移将创建存储认证日志所需的应用程序表

php artisan migrate

最后,将 AuthLogableNotifiable 特性添加到您的认证模型(默认为 App\User 模型)中。这些特性提供了各种方法,允许您获取常见的认证日志数据,例如最后登录时间、最后登录 IP 地址,并设置当从新设备登录时通知用户的方式

use AshikKaiser\AuthLog\AuthLogable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, AuthLogable;
}

基本用法

获取用户的全部认证日志

User::find(1)->authentications;

获取用户的最后登录信息

User::find(1)->lastLoginAt();

User::find(1)->lastLoginIp();

获取用户之前的登录时间 & IP 地址(忽略当前登录)

auth()->user()->previousLoginAt();

auth()->user()->previousLoginIp();

通知新设备登录

通知可以通过 mailnexmoslack 通道发送。默认通过电子邮件发送。

您可以通过定义 notifyAuthenticationLogVia 方法来决定通知应该通过哪些通道发送

/**
 * The Auth Log notifications delivery channels.
 *
 * @return array
 */
public function notifyAuthenticationLogVia()
{
    return ['nexmo', 'mail', 'slack'];
}

当然,您可以通过将 config/auth-log.php 配置文件中的 notify 选项设置为 false 来禁用通知

'notify' => env('AUTH_LOG_NOTIFY', false),

清除旧日志

您可以使用 Artisan 命令 auth-log:clear 清除旧的认证日志记录

php artisan auth-log:clear

在您的 config/auth-log.php 中的 older 选项指定的天数之前创建的记录将被删除

'older' => 365,

贡献

感谢您考虑为 Laravel Auth Log 贡献。

许可

Laravel Auth Log 是开源软件,根据 MIT 许可证 许可。