---
title: "Deprecation: #108568 - BackendUserAuthentication::recordEditAccessInternals() and $errorMsg"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:deprecation-108568-1734962478"
source: "Changelog/14.2/Deprecation-108568-BackendUserAuthenticationRecordEditAccessInternals.rst"
typo3-version: "14.2"
typo3-major: 14
type: "deprecation"
issue: 108568
forge: "https://forge.typo3.org/issues/108568"
tags: ["PHP-API", "FullyScanned", "ext:core"]
rendered: "2026-09-23T15:30:34+00:00"
---

# Deprecation: #108568 - BackendUserAuthentication::recordEditAccessInternals() and $errorMsg {#deprecation-108568-1734962478}

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

## Description {#description}

The method `BackendUserAuthentication::recordEditAccessInternals()`
and the property `BackendUserAuthentication::$errorMsg` of class
`\TYPO3\CMS\Core\Authentication\BackendUserAuthentication`
have been deprecated.

They represented an anti-pattern in which the method returned
a boolean value but communicated error details through a class property, making
the API difficult to use and test.

A new method `checkRecordEditAccess()` has been introduced. It returns
an `\TYPO3\CMS\Core\Authentication\AccessCheckResult` value object
containing both the access decision and any error messages.

## Impact {#impact}

Calling the deprecated method `recordEditAccessInternals()` or accessing
the deprecated property `$errorMsg` will trigger a deprecation-level log
entry and will stop working in TYPO3 v15.0.

The extension scanner reports usages as a **strong** match.

## Affected installations {#affected-installations}

Instances or extensions that directly call
`recordEditAccessInternals()` or access the
`$errorMsg` property.

## Migration {#migration}

Replace calls to `recordEditAccessInternals()` with
`checkRecordEditAccess()`. The new method returns a
`\TYPO3\CMS\Core\Authentication\AccessCheckResult` object with two public
properties:

-   `isAllowed` \- Boolean indicating whether access is granted
-   `errorMessage` \- String containing the error message. It is empty if
    access is granted

### Before {#before}

```php
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;

$backendUser = $this->getBackendUser();
if ($backendUser->recordEditAccessInternals($table, $record)) {
    // Access granted
} else {
    // Access denied, error message is in $backendUser->errorMsg
    $errorMessage = $backendUser->errorMsg;
}
```

### After {#after}

```php
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;

$backendUser = $this->getBackendUser();
$accessResult = $backendUser->checkRecordEditAccess($table, $record);
if ($accessResult->isAllowed) {
    // Access granted
} else {
    // Access denied
    $errorMessage = $accessResult->errorMessage;
}
```
