⭐ Found this useful? Install from Packagist and give the repo a star on GitHub.
Symfony bundle for user account lifecycle and presence: enable/disable accounts (UserChecker), throttled lastActivityAt updates, and configurable online detection.
Designed to complement nowo-tech/auth-kit-bundle without a hard Composer dependency.
enabled/ disabled accounts —AccountStatusUserCheckerblocks login for disabled userslastActivityAt— updated on authenticated HTTP requests (throttled)online_threshold—UserPresenceResolver::isOnline()and optional Twiguser_is_online()- Named profiles — separate config per user entity (
User,Admin, …) with O(1) class resolution - Session invalidation hook — optional listener when an account is disabled
- Optional traits —
EnabledUserTrait,LastActivityTrait - Translations — domain
NowoUserKitBundle(de,en,es,fr,it,nl,pt)
- PHP 8.2+
- Symfony 7.4 | 8.x
composer require nowo-tech/user-kit-bundle# config/packages/nowo_user_kit.yaml
nowo_user_kit:
default_profile: default
profiles:
default:
user_class: App\Entity\User
account_status:
enabled: true
last_activity:
enabled: true
online_threshold: 300The legacy flat layout (user_class at root) remains supported. See Configuration.
Login (AuthKit) → form_login → UserProvider → UserChecker (UserKit) → OK / blocked
Use the same user_class in both bundles. UserKit may inherit user_class from nowo_auth_kit.user_class when that parameter exists.
make up
make test-coverage-100
make phpstanmake -C demo up # Symfony 8.1 — http://localhost:8023Login with demo@user-kit.test / demo. The demo runs under FrankenPHP in Docker. See demo/README.md and docs/DEMO-FRANKENPHP.md for development vs production setup, including FrankenPHP worker mode for production.
- PHP: 100% line coverage on
src/(verified viamake test-coverage-100) - Compatibility: PHP 8.2+ · Symfony 7.4 / 8.x (CI matrix)
- Composer:
nowo-tech/user-kit-bundle - Config root:
nowo_user_kit