---
title: "Deprecation: #104773 - ext:backend LoginProviderInterface changes"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-104773-1724940753"
source: "Changelog/13.3/Deprecation-104773-ExtbackendLoginProviderInterfaceChanges.rst"
typo3-version: "13.3"
typo3-major: 13
type: "deprecation"
issue: 104773
forge: "https://forge.typo3.org/issues/104773"
tags: ["PHP-API", "NotScanned", "ext:backend"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Deprecation: #104773 - ext:backend LoginProviderInterface changes {#deprecation-104773-1724940753}

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

## Description {#description}

Method `\TYPO3\CMS\Backend\LoginProvider\LoginProviderInterface->render()` has been marked as deprecated
and is substituted by  `LoginProviderInterface->modifyView()` that will
be added to the interface in TYPO3 v14, removing `render()` from the
interface in v14.

Related to this, event `\TYPO3\CMS\Backend\LoginProvider\Event\ModifyPageLayoutOnLoginProviderSelectionEvent`
has been changed to deprecate `getController()` and `getPageRenderer()`,
while `getRequest()` has been added. `getView()` now typically returns
an instance of `ViewInterface`.

This change is related to the general [View refactoring](https://docs.typo3.org/permalink/changelog:feature-104773-1724939348).

## Impact {#impact}

The default `LoginProviderInterface`
implementation is
`UsernamePasswordLoginProvider`
provided by ext:core. This consumer has been adapted.

Using `LoginProviderInterface->render()` in TYPO3 v13 will trigger a
deprecation level log entry and will fail in v14.

## Affected installations {#affected-installations}

Instances with custom login providers that change the TYPO3 backend login
field rendering may be affected. The extension scanner is not configured to
find usages, since method name `render()` is too common. A deprecation
level log message is triggered upon use of the old method.

## Migration {#migration}

Consumers of `LoginProviderInterface`
should implement `modifyView()` instead, the transition should be smooth.
Consumers that need the `PageRenderer`
for JavaScript magic, should use [dependency injection](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/DependencyInjection/Index.html#dependency-injection)
to receive an instance.

The default implementation in `UsernamePasswordLoginProvider`
is a good example. Extensions that need to configure additional template, layout or
partial lookup paths can extend them:

```php
if ($view instanceof FluidViewAdapter) {
    $templatePaths = $view->getRenderingContext()->getTemplatePaths();
    $templateRootPaths = $templatePaths->getTemplateRootPaths();
    $templateRootPaths[] = 'EXT:my_extension/Resources/Private/Templates';
    $templatePaths->setTemplateRootPaths($templateRootPaths);
}
```

Consumers of `ModifyPageLayoutOnLoginProviderSelectionEvent`
should use the request instead, and/or should get an instance of
`PageRenderer` injected as well.
