57 if ($backendUser->isAdmin()) {
62 if (!$backendUser->check(
'tables_modify', $result[
'tableName'])) {
66 'No table modify permission for user ' . $backendUser->user[
'uid'] .
' on table ' . $result[
'tableName'],
72 $userHasAccess =
false;
74 if ($result[
'command'] ===
'new') {
78 if (is_array($result[
'parentPageRow'])) {
80 $userPermissionOnPage = $backendUser->calcPerms($result[
'parentPageRow']);
81 if ($result[
'tableName'] ===
'pages') {
84 $userHasAccess =
true;
87 'No page new permission for user ' . $backendUser->user[
'uid'] .
' on page ' . $result[
'databaseRow'][
'uid'],
94 $userHasAccess =
true;
97 'No content new permission for user ' . $backendUser->user[
'uid'] .
' on page ' . $result[
'parentPageRow'][
'uid'],
104 $userHasAccess =
true;
109 'No record creation permission for user ' . $backendUser->user[
'uid'] .
' on page root node',
115 if ($result[
'tableName'] ===
'pages') {
117 $userPermissionOnPage = $backendUser->calcPerms($result[
'defaultLanguagePageRow'] ?? $result[
'databaseRow']);
118 if ((
bool)($userPermissionOnPage &
Permission::PAGE_EDIT) && $backendUser->check(
'pagetypes_select', $result[
'databaseRow'][$result[
'processedTca'][
'ctrl'][
'type']])) {
119 $userHasAccess =
true;
122 'No page edit permission for user ' . $backendUser->user[
'uid'] .
' on page ' . $result[
'databaseRow'][
'uid'],
128 if (isset($result[
'parentPageRow']) && is_array($result[
'parentPageRow'])) {
130 $userPermissionOnPage = $backendUser->calcPerms($result[
'parentPageRow']);
132 $userHasAccess =
true;
135 'No content edit permission for user ' . $backendUser->user[
'uid'] .
' on page ' . $result[
'parentPageRow'][
'uid'],
141 $userHasAccess =
true;
147 'No content edit permission for user ' . $backendUser->user[
'uid'] .
' on page root node',
152 if ($userHasAccess) {
154 $userHasAccess = $backendUser->recordEditAccessInternals($result[
'tableName'], $result[
'databaseRow']);
155 if (!$userHasAccess) {
157 $backendUser->errorMsg,
164 if ($userHasAccess && $exception) {
167 throw new \LogicException(
168 'Access was TRUE but an exception was raised as well for table ' . $result[
'tableName'] .
' and user ' . $backendUser->user[
'uid'],
173 if (!empty(
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'typo3/alt_doc.php'][
'makeEditForm_accessCheck'] ??
null)) {
176 $userHasAccessBeforeHook = $userHasAccess;
177 foreach (
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'typo3/alt_doc.php'][
'makeEditForm_accessCheck'] as $methodReference) {
179 'table' => $result[
'tableName'],
180 'uid' => $result[
'databaseRow'][
'uid'],
181 'cmd' => $result[
'command'],
182 'hasAccess' => $userHasAccess,
184 $userHasAccess = (bool)GeneralUtility::callUserFunction($methodReference, $parameters, $this);
186 if ($userHasAccessBeforeHook && !$userHasAccess) {
188 'Access to table ' . $result[
'tableName'] .
' for user ' . $backendUser->user[
'uid'] .
' was denied by a makeEditForm_accessCheck hook',
192 if (!$userHasAccessBeforeHook && $userHasAccess) {
198 if (!$userHasAccess && !$exception) {
201 throw new \LogicException(
202 'Access to table ' . $result[
'tableName'] .
' denied, but no reason given',
211 $result[
'userPermissionOnPage'] = $userPermissionOnPage;