jetiradoro/laravel-session-manager
Manage active user sessions in Laravel using the database session driver. View current connections, detect inactive sessions (e.g., 10+ minutes), and force logout or destroy old sessions via an admin page. Includes install command, migrations, and publishable config/routes.
Installation:
composer require jetiradoro/laravel-session-manager
php artisan session-manager:install
.env variables, migrations, and default configurations.First Use Case:
/admin/current-connections to view active sessions older than the configured inactivity threshold (default: 10 minutes).Prerequisites:
SESSION_DRIVER=database in .env (modified automatically during installation).SM_ROUTES=true in .env (enables default admin routes).Session Monitoring:
SESSION_DRIVER=database)./admin/current-connections route to list inactive sessions (configurable threshold in session-manager.php).Forced Logout:
use Jetiradoro\SessionManager\Facades\SessionManager;
$sessions = SessionManager::getInactiveSessions(60); // 60 minutes
foreach ($sessions as $session) {
SessionManager::forceLogout($session->id);
}
Custom Routes:
SM_ROUTES=false in .env.config/session-manager.php:
'routes' => [
'inactive_sessions' => 'admin.connections',
'force_logout' => 'admin.force-logout',
],
Integration with Auth Events:
auth.logout or auth.login events to sync session data:
use Jetiradoro\SessionManager\Events\SessionUpdated;
Event::listen(SessionUpdated::class, function ($event) {
// Custom logic (e.g., log session changes)
});
Frontend Integration:
app.js and dependencies are loaded in your layout:
<script src="{{ mix('js/app.js') }}"></script>
Database Driver Requirement:
SESSION_DRIVER=database. If using file/redis, sessions won’t be tracked.SESSION_DRIVER=database in .env before installation.Route Conflicts:
/admin/current-connections) may clash with existing admin routes.SM_ROUTES=false and customize routes in config/session-manager.php.Vue.js Dependencies:
app.js includes Vue/Axios or manually add:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>
Session Cleanup:
* * * * * php artisan session-manager:purge --minutes=30
Configuration Overrides:
session-manager.php) may be overwritten during updates.config('session-manager.key') to access values dynamically.Check Migrations:
php artisan migrate if sessions aren’t appearing in /admin/current-connections.sessions table has the last_activity column.Log Session Events:
config/session-manager.php:
'debug' => env('APP_DEBUG', false),
Axios Errors:
Custom Session Data:
sessions table by publishing migrations:
php artisan vendor:publish --tag=migrations
user_agent or ip_address to database/migrations/[timestamp]_add_session_metadata.php.Webhook Notifications:
Event::listen(SessionUpdated::class, function ($event) {
if ($event->action === 'logout') {
// Send webhook
}
});
Multi-Tenant Support:
SessionManager facade:
use Jetiradoro\SessionManager\Facades\SessionManager;
$tenantId = Auth::user()->tenant_id;
$sessions = SessionManager::getInactiveSessions(60, $tenantId);
How can I help you explore Laravel packages today?