Download the PHP package move-elevator/typo3-login-warning without Composer
On this page you can find all versions of the php package move-elevator/typo3-login-warning. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download move-elevator/typo3-login-warning
More information about move-elevator/typo3-login-warning
Files in move-elevator/typo3-login-warning
Package typo3-login-warning
Short Description Login Warning - Extends the TYPO3 backend login warning_mode functionality to inform about suspicious logins with several features.
License GPL-2.0-or-later
Informations about the package typo3-login-warning
This extension extends the TYPO3 backend login warning_mode functionality to inform about suspicious logins with several features:
- New IP based warning to detect logins from new IP addresses
- Long Time No See notification for infrequent users
- Out Of Office login detection outside defined working hours, holidays, or vacation periods
[!NOTE] Since I was annoyed by the constant login emails from the TYPO3 backend, but the issue of login security is still extremely important, I expanded the standard login notification functions of TYPO3 with some more or less well-known additional features.
🔥 Installation
Requirements
- TYPO3 >= 12.4
- PHP 8.2+
Composer
TER
Download the zip file from TYPO3 extension repository (TER).
Setup
Set up the extension after the installation:
By default, the Long Time No See detectors are enabled.
🧰 Configuration
Configure the extension through the TYPO3 backend:
- Go to Settings → Extension Configuration
- Select typo3_login_warning
- Configure your detectors and notification settings
🔎 Detectors
Detectors are used to detect certain login events. If a detector matches, a notification will be sent.
[!IMPORTANT] Only the first matching detector will trigger a notification.
The following detectors are available (in order of execution):
NewIpDetector
Detects logins from new IP addresses and triggers a warning email.
The user "admin" logged in from a new IP address 192.168.97.5 at the site "EXT:typo3-login-warning Dev Environment".
Only an HMAC-SHA-256 hash of the user/IP combination is stored — never the raw IP address. You can also define a whitelist of IP addresses that will not trigger a warning. An IP geolocation lookup and a device information check can be enabled to add more information to the notification email.
[!IMPORTANT] Keep in mind, that this detector stores hashed IP addresses in the database table
tx_typo3loginwarning_iplogto track known IPs.
Configuration Options:
| Setting | Description | Default |
|---|---|---|
| Active | Enable New IP detector | true |
| Fetch Geolocation | Enable IP geolocation lookup (opt-in, see Geolocation) | false |
| Include Device Information | Include browser and OS information in notification emails | true |
| IP Whitelist | Comma-separated list of whitelisted IPs/networks (supports CIDR notation like 192.168.1.0/24) |
127.0.0.1 |
| Affected Users | Which users should trigger this detector: All Users, Only Admins, Only System Maintainers |
All Users |
| Notification Receiver | Who should receive the notification: Email Recipients, Logged-In User, Both |
Email Recipients |
[!NOTE] IP address hashing requires an HMAC key. The extension automatically uses TYPO3's
$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']as fallback. Setting a dedicated random key is recommended so the stored hashes are not tied to the global encryption key. Note that changing the key invalidates all stored hashes — every known IP will trigger one new-IP notification again.
IP log cleanup
The IP log table grows with every new (user, IP) combination — especially when clients use IPv6 privacy extensions with rotating addresses. To enforce a retention period, delete entries that have not been seen for a given number of days:
Use --dry-run to only report how many entries would be deleted. The command is schedulable, e.g. via the TYPO3 scheduler "Execute console commands" task.
[!NOTE] After an entry has been deleted, the next login from that IP address triggers a new-IP notification again — that is the intended effect of a retention period.
Entries created by older extension versions (1.0.3 and below) may lack a last-seen timestamp. The cleanup command initializes such legacy entries with the current time instead of deleting them, so they are granted a full retention period before becoming cleanup candidates — otherwise every already-known IP would be reported as new again after the first cleanup run.
Geolocation
If Fetch Geolocation is enabled, the extension will use the ip-api.com service to fetch geolocation information for the IP address. Only public IP addresses will be looked up to respect privacy.
[!WARNING] Geolocation lookup is disabled by default and is an explicit opt-in: it transfers the login IP address (personal data under GDPR) to the external ip-api.com service, using unencrypted HTTP on the free tier. Before enabling it, check your data protection requirements (third-country transfer, privacy policy, data processing agreement) and note that the free ip-api.com endpoint is limited to non-commercial use. Consider providing your own
GeolocationServiceInterfaceimplementation (see below) if you need an EU-hosted or TLS-secured provider.[!TIP] You can implement your own geolocation service by implementing the
GeolocationServiceInterfaceand registering it in the DI container.
LongTimeNoSeeDetector
Detects logins after a long period of inactivity (default: 365 days).
The user "admin" logged in again after a long time (643 days) at the site "EXT:typo3-login-warning Dev Environment".
Configuration Options:
| Setting | Description | Default |
|---|---|---|
| Active | Enable Long Time No See detector | true |
| Threshold Days | Days of inactivity before triggering | 365 |
| Affected Users | Which users should trigger this detector: All Users, Only Admins, Only System Maintainers |
All Users |
| Notification Receiver | Who should receive the notification: Email Recipients, Logged-In User, Both |
Email Recipients |
OutOfOfficeDetector
Detects logins outside defined working hours, holidays, or vacation periods. Supports flexible working hours with multiple time ranges per day (e.g., lunch breaks), timezone handling, and comprehensive blocked periods configuration with both full dates and recurring patterns.
The user "admin" logged in outside office hours at the site "EXT:typo3-login-warning Dev Environment".
Configuration Options:
| Setting | Description | Default |
|---|---|---|
| Active | Enable Out Of Office detector | false |
| Working Hours | JSON configuration for working hours. Supports shortcuts: workday (Mon-Fri), weekend (Sat-Sun). Also supports multiple time ranges per day for lunch breaks. Examples: {"workday":["09:00","17:00"]}, {"workday":["09:00","17:00"],"weekend":["10:00","14:00"]}, {"workday":["09:00","17:00"],"friday":["09:00","15:00"]}, {"monday":[["09:00","12:00"],["13:00","17:00"]]} |
Business hours (06-20) Mon-Fri |
| Timezone | Timezone for working hours | UTC |
| Blocked Periods | Comma-separated list of blocked days or periods. Formats: Full date (2025-12-25), recurring date (12-25), date range (2025-07-15:2025-07-30), recurring range (12-20:01-05). Example: 12-25,01-01,2025-07-15:2025-07-30 |
Empty |
| Affected Users | Which users should trigger this detector: All Users, Only Admins, Only System Maintainers |
All Users |
| Notification Receiver | Who should receive the notification: Email Recipients, Logged-In User, Both |
Email Recipients |
Custom Detectors
[!TIP] You can implement your own detector by implementing the
AbstractDetectorand registering it in the DI container.
📢 Notification
Notification methods are used to notify about detected login events.
The following notification methods are available:
EmailNotification
Sends a warning email to defined recipients. If no recipient is defined, the email will be sent to the address defined in $GLOBALS['TYPO3_CONF_VARS']['BE']['warning_email_addr'].
Global Configuration Options:
- Email Recipients: Email address(es) of the notification recipients (comma-separated)
Per-Detector Configuration:
Each detector has its own Notification Receiver setting that controls who receives notifications:
- Email Recipients (default): Send notification only to configured email recipients
- Logged-In User: Send notification only to the logged-in user (requires valid email address)
- Both: Send notification to both email recipients and logged-in user
Templates
You can override the email templates located in Resources/Private/Templates/Email/Default/LoginNotification/.
Custom Notifiers
[!TIP] You can implement your own notification method by implementing the
NotifierInterfaceand registering it in the DI container.
Event
You can modify the notification by listening to the ModifyLoginNotificationEvent.
[!NOTE] Register your event listener via the
AsEventListenerattribute (TYPO3 >= 13) or in your service configuration (see docs).
🧑💻 Contributing
Please have a look at CONTRIBUTING.md.
⭐ License
This project is licensed under GNU General Public License 2.0 (or later).
All versions of typo3-login-warning with dependencies
ext-filter Version *
doctrine/dbal Version ^3.7 || ^4.0
psr/event-dispatcher Version ^1.0
psr/http-client Version ^1.0.3
psr/http-message Version ^1.0 || ^2.0
psr/http-server-handler Version ^1.0.2
psr/http-server-middleware Version ^1.0.2
psr/log Version ^3.0.2
symfony/console Version ^6.4 || ^7.0 || ^8.0
symfony/mailer Version ^6.4 || ^7.0 || ^8.0
symfony/mime Version ^6.4 || ^7.0 || ^8.0
typo3/cms-backend Version ^12.0 || ^13.0 || ^14.3
typo3/cms-beuser Version ^12.0 || ^13.0 || ^14.3
typo3/cms-core Version ^12.0 || ^13.0 || ^14.3
typo3fluid/fluid Version ^2.15 || ^4.2 || ^5.0