---
title: "Breaking: #101933 - Dispatch AfterUserLoggedInEvent for frontend user login"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-101933-1695472624"
source: "Changelog/13.0/Breaking-101933-DispatchAfterUserLoggedInEventForFrontendUserLogin.rst"
typo3-version: "13.0"
typo3-major: 13
type: "breaking"
issue: 101933
forge: "https://forge.typo3.org/issues/101933"
tags: ["Backend", "NotScanned", "ext:backend"]
rendered: "2026-09-17T21:17:42+00:00"
---

# Breaking: #101933 - Dispatch AfterUserLoggedInEvent for frontend user login {#breaking-101933-dispatch-afteruserloggedinevent-for-frontend-user-login}

See [forge#101933](https://forge.typo3.org/issues/101933)

## Description {#description}

The `\TYPO3\CMS\Core\Authentication\Event\AfterUserLoggedInEvent` PSR-14
event is now also dispatched for a successful frontend user login.

## Impact {#impact}

Listeners to the `AfterUserLoggedInEvent` event should evaluate the
implementation type of the `$user` property, if custom functionality
after a user login should be executed for backend login only.

## Affected installations {#affected-installations}

Installations with an event listener to the php:`AfterUserLoggedInEvent` PSR-14
event.

## Migration {#migration}

If custom functionality in a listener to the `AfterUserLoggedInEvent`
event should be executed for the backend user login only, a type check for the
`$user` property must be added.

```php
// Before
public function __invoke(AfterUserLoggedInEvent $afterUserLoggedInEvent): void
{
    // custom logic after backend user login
}

// After
public function __invoke(AfterUserLoggedInEvent $afterUserLoggedInEvent): void
{
    if ($afterUserLoggedInEvent->getUser() instanceof BackendUserAuthentication) {
        // custom logic after backend user login
    }
}
```
