alessandronuunes/single-session

Plugin de sessão única para FilamentPHP com Laravel 12

dev-main 2025-05-29 08:54 UTC

This package is not auto-updated.

Last update: 2025-06-27 07:41:46 UTC


README

Plugin que implementa limitação de sessão única por usuário no FilamentPHP com Laravel 12.

Características

  • ✅ Uma sessão ativa por usuário
  • ✅ Modal de confirmação nativo do Filament
  • ✅ Notificações configuráveis (mail, database, broadcast)
  • ✅ Traduções em inglês e português brasileiro
  • ✅ Solução plug-and-play
  • ✅ Sem dependências externas

Instalação

  1. Instale o pacote via Composer:
composer require alessandronuunes/single-session
  1. Publique e execute as migrações:
php artisan vendor:publish 
--tag="single-session-migrations"
php artisan migrate
  1. (Opcional) Publique as traduções:
php artisan vendor:publish 
--tag="single-session-translations"
  1. (Opcional) Publique a configuração:
php artisan vendor:publish 
--tag="single-session-config"

Configuração

No seu AdminPanelProvider , registre o plugin:

use 
Alessandronuunes\SingleSession\Filament\SingleSessionPl
ugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->default()
        ->id('admin')
        ->path('admin')
        ->plugin(SingleSessionPlugin::make()
            ->notificationChannels(['mail', 
            'database'])
        );
}

Canais de Notificação

  • mail : Envia e-mail quando sessão é encerrada
  • database : Armazena notificação no banco de dados
  • broadcast : Envia notificação em tempo real

Configuração de E-mail

Configure as variáveis de ambiente no .env :

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=seu-email@gmail.com
MAIL_PASSWORD=sua-senha
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@seudominio.com
MAIL_FROM_NAME="Sistema"

Como Funciona

  1. Novo Login : Se detectada sessão ativa, exibe modal de confirmação
  2. Confirmação : Encerra sessão anterior e envia notificações
  3. Cancelamento : Invalida nova sessão e redireciona
  4. Logout : Limpa automaticamente o session_id do usuário

Segurança

  • Usa autenticação nativa do Laravel
  • Gerenciamento seguro de sessões
  • Notificações de segurança automáticas
  • Logs de atividade de sessão

Licença

MIT License