joseforozco/filament-auto-logout

A filament plugin that auto logs out your users if they are idle.

Maintainers

Package info

github.com/joseforozco/auto-logout

Homepage

Issues

pkg:composer/joseforozco/filament-auto-logout

Fund package maintenance!

niladam

Statistics

Installs: 6

Dependents: 0

Suggesters: 0

Stars: 0

v3.0.2 2026-04-03 12:23 UTC

README

Plugin para FilamentPHP que cierra la sesión de los usuarios de forma automática cuando están inactivos. Funciona correctamente con múltiples pestañas abiertas.

Este paquete es un fork de niladam/filament-auto-logout. Se han incorporado compatibilidad con Filament v5 y traducción al español.

Compatibilidad

Versión del paquete Filament
v3 (este fork) v3 · v4 · v5

¿Qué hace este plugin?

  • Detecta la inactividad del usuario (sin movimiento de ratón, teclado ni interacción).
  • Muestra una notificación de advertencia antes de cerrar sesión.
  • Muestra un contador de tiempo restante en la barra superior del panel.
  • Sincroniza el temporizador entre múltiples pestañas del mismo navegador.
  • Totalmente configurable: duración, advertencia, color, ícono y ubicación del badge.
  • Soporte de traducciones: en, es, ar, ro.

Instalación

composer require joseforozco/auto-logout

Ejecuta el instalador del paquete:

php artisan filament-auto-logout:install

Publica los assets de Filament:

php artisan filament:assets

Configuración

Puedes publicar el archivo de configuración con:

php artisan vendor:publish --tag="filament-auto-logout-config"

Contenido del archivo de configuración:

use Carbon\Carbon;
use Filament\View\PanelsRenderHook;

return [
    // Habilitar o deshabilitar el plugin
    'enabled' => env('FILAMENT_AUTO_LOGOUT_ENABLED', true),

    // Tiempo de inactividad en segundos antes de cerrar sesión (por defecto: 15 minutos)
    'duration_in_seconds' => env('FILAMENT_AUTO_LOGOUT_DURATION_IN_SECONDS', Carbon::SECONDS_PER_MINUTE * 15),

    // Segundos antes del cierre de sesión en los que se muestra la advertencia
    'warn_before_in_seconds' => env('FILAMENT_AUTO_LOGOUT_WARN_BEFORE_IN_SECONDS', 30),

    // Mostrar el contador de tiempo restante en el panel
    'show_time_left' => env('FILAMENT_AUTO_LOGOUT_SHOW_TIME_LEFT', true),

    // Texto que aparece antes del contador
    'time_left_text' => env('FILAMENT_AUTO_LOGOUT_TIME_LEFT_TEXT', 'Time left:'),

    // Ubicación del badge dentro del panel
    'location' => env('FILAMENT_AUTO_LOGOUT_LOCATION', PanelsRenderHook::GLOBAL_SEARCH_BEFORE),
];

También puedes configurar variables de entorno en tu .env:

FILAMENT_AUTO_LOGOUT_ENABLED=true
FILAMENT_AUTO_LOGOUT_DURATION_IN_SECONDS=900
FILAMENT_AUTO_LOGOUT_WARN_BEFORE_IN_SECONDS=30
FILAMENT_AUTO_LOGOUT_SHOW_TIME_LEFT=true
FILAMENT_AUTO_LOGOUT_TIME_LEFT_TEXT="Tiempo restante:"

Uso

Básico

En tu PanelProvider (app/Providers/Filament/AdminPanelProvider.php):

use Joseforozco\FilamentAutoLogout\AutoLogoutPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugins([
            AutoLogoutPlugin::make(),
        ]);
}

Personalizado

use Carbon\Carbon;
use Filament\Support\Colors\Color;
use Joseforozco\FilamentAutoLogout\AutoLogoutPlugin;

->plugins([
    AutoLogoutPlugin::make()
        ->color(Color::Emerald)                              // Color del badge (por defecto: Color::Stone)
        ->icon('heroicon-o-arrow-right-start-on-rectangle')  // Ícono del badge (por defecto: heroicon-o-clock)
        ->logoutAfter(Carbon::SECONDS_PER_MINUTE * 5)        // Cerrar sesión tras 5 minutos de inactividad
        ->warnBefore(60)                                     // Advertir 60 segundos antes
        ->withoutWarning()                                   // Deshabilitar la notificación de advertencia
        ->withoutTimeLeft()                                  // Ocultar el contador de tiempo
        ->timeLeftText('Tiempo restante:')                   // Personalizar el texto del contador
        ->disableIf(fn () => auth()->id() === 1)             // Deshabilitar para el usuario con ID 1
        ->enableIf(fn () => auth()->user()->hasRole('admin')) // Habilitar solo para admins
])

Traducciones

El plugin incluye soporte para múltiples idiomas: en, es, ar, ro.

Para publicar y personalizar las traducciones:

php artisan vendor:publish --tag="filament-auto-logout-translations"

Los archivos se publicarán en lang/vendor/filament-auto-logout/.

Changelog

Ver CHANGELOG para el historial de cambios.

Créditos

Licencia

MIT. Ver LICENSE para más información.