Deprecation: #108568 - BackendUserAuthentication::recordEditAccessInternals() and $errorMsg
See forge#108568
Description
The method
\TYPO3\
and the property
\TYPO3\
have been deprecated.
These methods and properties represented an anti-pattern where 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
check has been introduced that returns an
\TYPO3\ value object containing
both the access decision and any error message.
Impact
Calling the deprecated method
record or accessing
the deprecated property
$error 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
Instances or extensions that directly call
record
or access the
$error property are affected.
Migration
Replace calls to
record with
check.
The new method returns an
Access object with two public properties:
is- boolean indicating if access is grantedAllowed error- string containing the error message (empty if access is allowed)Message
Before
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
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;
}