evanschleret/laravel-user-presence 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

evanschleret/laravel-user-presence

最新稳定版本:v1.0.1

Composer 安装命令:

composer require evanschleret/laravel-user-presence

包简介

Another Laravel package for tracking user presence in real-time applications.

README 文档

README

Laravel User Presence logo

Laravel User Presence

Latest Version on Packagist Total Downloads

This package allows you to track user presence in your Laravel application. It provides a simple way to determine if a user is online, offline, or idle. Useful for chat apps, dashboards, real-time features, and more.

Installation

composer require evanschleret/laravel-user-presence

Optionally, publish the config file:

php artisan vendor:publish --provider="EvanSchleret\LaravelUserPresence\Providers\LaravelUserPresenceServiceProvider"

Requirements

  • Laravel 10 or 11
  • PHP >= 8.2
  • A last_seen_at column on your users table (or whichever model you attach presence to)
$table->timestamp('last_seen_at')->nullable();

You could also publish the migration file to create this column:

php artisan vendor:publish --provider="EvanSchleret\LaravelUserPresence\Providers\LaravelUserPresenceServiceProvider" --tag="migrations"

Then run the migration:

php artisan migrate

Usage

Trait Add the trait to your User model:

use EvanSchleret\LaravelUserPresence\Traits\HasUserPresence;

class User extends Authenticatable
{
    use HasUserPresence;
}

Middleware

Add the UpdateLastSeen middleware to your web or api group to update presence on each request:

// app/Http/Kernel.php
protected $middlewareGroups = [
    'web' => [
        // ...
        \EvanSchleret\LaravelUserPresence\Http\Middleware\UpdateLastSeen::class,
    ],
];

Attributes available

After setup, the following attributes will be available on the user model:

$user->is_online       // true if active in the last 2 minutes
$user->is_offline      // inverse of is_online
$user->is_idle         // true if inactive for 2–10 minutes
$user->last_seen_ago   // "3 minutes ago", "never", etc.
$user->presence_status // 'online', 'away', or 'offline'

Configuration

You can customize time thresholds in the published config file:

// config/user-presence.php
return [
    'online_threshold' => 300,  // in seconds
    'idle_threshold' => 600,     // in seconds
    'guard' => 'web', // or 'api' / 'sanctum' if using API authentication
];

Events

The package dispatches these events when presence changes:

UserWentOnline
UserWentOffline
UserWentIdle

Roadmap

  • Tests
  • Redis driver for real-time broadcast presence
  • Eloquent observer-based updates

Contributing

I'm always open to contributions! Feel free to submit issues or pull requests on GitHub.

License

This package is open-sourced software licensed under the MIT license.

统计信息

  • 总下载量: 23
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-07-29