nowo-tech / user-kit-bundle
Symfony bundle for user account enable/disable, last activity tracking, and online presence detection.
Package info
github.com/nowo-tech/UserKitBundle
Type:symfony-bundle
pkg:composer/nowo-tech/user-kit-bundle
Fund package maintenance!
Requires
- php: >=8.2 <8.6
- doctrine/doctrine-bundle: ^2.10 || ^3.0
- doctrine/orm: ^2.15 || ^3.0
- symfony/config: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- symfony/framework-bundle: ^7.0 || ^8.0
- symfony/http-kernel: ^7.0 || ^8.0
- symfony/property-access: ^7.0 || ^8.0
- symfony/security-bundle: ^7.0 || ^8.0
- symfony/security-core: ^7.0 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^11.0
- rector/rector: ^2.0
- symfony/twig-bundle: ^7.0 || ^8.0
- symfony/yaml: ^7.0 || ^8.0
Suggests
- symfony/twig-bundle: Required for the user_is_online Twig helper.
README
⭐ 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.
Features
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)
Requirements
- PHP 8.2+
- Symfony 7.4 | 8.x
Quick start
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: 300
The legacy flat layout (user_class at root) remains supported. See Configuration.
AuthKit coexistence
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.
Development
make up make test-coverage-100 make phpstan
Demo
make -C demo up # Symfony 8.1 — http://localhost:8023
Login 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.
Tests and coverage
- PHP: 100% line coverage on
src/(verified viamake test-coverage-100) - Compatibility: PHP 8.2+ · Symfony 7.4 / 8.x (CI matrix)
Package
- Composer:
nowo-tech/user-kit-bundle - Config root:
nowo_user_kit
Documentation
- Installation
- Configuration
- Usage
- Contributing
- Changelog
- Upgrading
- Release
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit