dev-moez / auth-last-activity
一个用于记录多守卫应用程序用户最后活动的软件包
Requires
- php: ^8.1
README
Auth Last Activity
👱 🕑 多认证最后活动Laravel包
目录
📖 简介
AuthLastActivity 是一个 Laravel 包,支持多个认证守卫以记录应用用户的最后活动。
✨ 功能
- 支持多个认证守卫
- 可调整的数据库连接
- 可以设置在线用户的秒数状态
🧰 安装
您可以通过 composer 安装此包
composer require dev-moez/auth-last-activity
包将自动注册自身。
要发布包所需的配置和迁移文件,请运行以下 artisan 命令
php artisan auth-last-activity:install
或手动
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="auth-last-activity-config"
这是发布配置文件的内容
<?php return [ # True/false to enable the package or disable it 'enabled' => true, # Define database connection which the package would use to store last activity for users # 'mysql' is set as the default connection, you can change it to another connection as you desire 'connection' => 'mysql', # Define the period in seconds, by which a user status would be defined as 'Online' 'online-period' => 5, # The timezone that the package would use to store the date and time for user's last activity # By default the env APP_TIMEZONE will be used otherwise the timezone in the app.php config file would be used 'timezone' => env('APP_TIMEZONE', config('app.timezone')), # Used middleware for api routes 'middleware' => ['auth'], ];
您可以使用以下命令发布迁移文件
php artisan vendor:publish --tag="auth-last-activity-migrations"
发布迁移文件后,您可以通过运行迁移来创建 user_last_activities
表
php artisan migrate
⚙️ 配置
步骤 1
要开始使用此包,您必须将中间件 AuthLastActivityMiddleware
添加到您的 Kernel.php
文件中,该文件位于项目的 app\Http
目录下。
为了确保所有通过 web 或 api 的请求都被考虑,您应该在 web
& api
数组中都添加此中间件,如下所示
protected $middlewareGroups = [
'web' => [
...
AuthLastActivityMiddleware::class,
],
'api' => [
...
AuthLastActivityMiddleware::class,
],
];
步骤 2
将 HasLastActivity
特性添加到您 Laravel 项目的每个可认证模型中,例如 User
和任何其他用于不同认证守卫的模型,例如在 User
模型上的示例
<?php
namespace App\Models;
use DevMoez\AuthLastActivity\Models\Concerns\HasLastActivity;
class User extends Authenticatable
{
..
use HasLastActivity;
}
完成这些操作后,您就可以出发了 🚀!
🚀 使用
获取用户最后活动
安装并配置完包后,它将自动跟踪通过您的应用程序的认证用户的最后活动时间。您可以通过在 User
模型上的 lastActivity
一对一关系来访问最后活动时间 - 或任何其他可认证模型,例如 Admin
等,如下所示
$user = User::findOrFail(100);
$user->lastActivity;
这将返回最后活动数据集合
authenticatable_type
是用于记录的可认证模型authenticatable_id
是用于记录的可认证 IDlast_activity_url
是用户最后访问的 URLlast_activity_time
是用户最后活动的时间戳user_agent
是请求中的用户代理数据ip_address
是用户最后访问 URL 所使用的 IP 地址headers
是请求头,以防您需要它们is_mobile
是一个布尔属性,用于告诉您最后活动是否通过移动设备完成。request_source
是api
或web
的枚举值previous_url
是用户在最后活动 URL 之前访问的 URL。
获取用户状态
要获取用户的在线状态,您可以使用名为 isOnline
的方法
$user = User::findOrFail(100);
$user->isOnline(); // Check ->isOffline() too
获取在线用户
要获取所有在线用户,您可以使用名为 getOnline
的静态方法,例如
$onlineUsers = User::getOnline(); // returns Illuminate\Database\Eloquent\Builder
$onlineAdmins = Admin::getOnline(); // returns Illuminate\Database\Eloquent\Builder
获取离线用户
要获取所有离线用户,您可以使用名为 getOffline
的静态方法,例如
$offlineUsers = User::getOffline(); // returns Illuminate\Database\Eloquent\Builder
$offlineAdmins = Admin::getOffline(); // returns Illuminate\Database\Eloquent\Builder
请注意,获取在线和离线用户基于 online-period
的 seconds
值,您可以在 auth-last-activity.php
配置文件中找到它。
获取特定时间段内的在线用户
要获取特定秒数内的在线用户,您可以使用 activeWithin(int $seconds)
静态方法,并传递您想使用的秒数。
$users = User::activeWithin(120);
同样,这将返回 eloquent 构建器而不是 User
模型的集合,在最后两分钟内。如果您想要集合,请在前面的代码后添加 ->get()
$users = $users->get();
使用 cache
获取用户在线状态
要使用 cache
获取用户的在线状态,您可以通过在 isOnline
方法的 viaCache
参数中传递 true
来实现。
$user = User::findOrFail(100);
$user->isOnline(viaCache: true)
或者,在您的代码中,您可以使用以下代码片段来实现这一点
use Illuminate\Support\Facades\Cache;
$isOnline = Cache::has('online-auth-{$authenticatable_name}-{$authenticatable_id}');
认证名称是什么?
它是您模型基本名称的 kebab/lowercase。
假设您的项目有两个认证模型
User
默认的认证模型,用于任何 Laravel 项目中的用户Admin
您为另一守护者创建的,用于管理员的模型
那么,在第一种情况下,$authenticatable_name
应该是 'user',在第二种情况下,$authenticatable_name
应该是 'admin'。$authenticatable_id
是数据库中此记录的主键。示例
- 'online-auth-user-10'
- 'online-auth-admin-1000'
您可以使用名为 getAuthenticatableName()
的静态方法为任何认证模型获取认证名称。
$userAuthenticatableName = User::getAuthenticatableName();
$adminAuthenticatableName = Admin::getAuthenticatableName();
❓ 为什么这个包返回 Eloquent 构建器而不是集合?
此方法适用于大数据集,因为它只从数据库检索必要的数据,使其更快更高效。因此,如果您想进行任何进一步的操作,如过滤、映射等,则最好在构建器上执行,而不是在集合上,完成后再调用 get()
方法来返回集合。
更新
想要更新到最新版本?
composer update dev-moez/auth-last-activity
卸载
composer remove dev-moez/auth-last-activity
许可证
MIT 许可证 (MIT)。
贡献
欢迎贡献!如果您想通过添加新功能或其他增强功能来为包做出贡献,请 fork 存储库并提交拉取请求。
- fork 项目
- 创建您的功能分支(git checkout -b feature/new-feature-name)
- 提交您的更改(git commit -m '添加额外功能')
- 推送到分支(git push origin feature/new-feature-name)
- 打开拉取请求
请确保您做出的任何贡献或评论都备受赞赏。
联系
Abdelrahman Moez(又名 Moez)- abdelrahman.moez@icloud.com