‪TYPO3CMS  ‪main
DatabaseUserPermissionCheckTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
21 use PHPUnit\Framework\MockObject\MockObject;
22 use Psr\EventDispatcher\EventDispatcherInterface;
37 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
38 
39 final class ‪DatabaseUserPermissionCheckTest extends UnitTestCase
40 {
42 
43  protected function ‪setUp(): void
44  {
45  parent::setUp();
46  $this->beUserMock = $this->createMock(BackendUserAuthentication::class);
47  ‪$GLOBALS['BE_USER'] = ‪$this->beUserMock;
48  ‪$GLOBALS['BE_USER']->user['uid'] = 42;
49  }
50 
51  #[Test]
53  {
54  $this->beUserMock->method('isAdmin')->willReturn(true);
55 
56  $result = (new ‪DatabaseUserPermissionCheck())->addData([]);
57 
58  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
59  }
60 
61  #[Test]
63  {
64  $input = [
65  'tableName' => 'tt_content',
66  ];
67  $this->beUserMock->method('isAdmin')->willReturn(false);
68  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(false);
69 
70  $this->expectException(AccessDeniedTableModifyException::class);
71  $this->expectExceptionCode(1437683248);
72 
73  (new ‪DatabaseUserPermissionCheck())->addData($input);
74  }
75 
76  #[Test]
78  {
79  $input = [
80  'tableName' => 'tt_content',
81  'command' => 'edit',
82  'vanillaUid' => 123,
83  'databaseRow' => [],
84  'parentPageRow' => [
85  'uid' => 42,
86  'pid' => 321,
87  ],
88  ];
89  $this->beUserMock->method('isAdmin')->willReturn(false);
90  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
91  $this->beUserMock->method('calcPerms')->with(['uid' => 42, 'pid' => 321])->willReturn(‪Permission::NOTHING);
92 
93  $this->expectException(AccessDeniedContentEditException::class);
94  $this->expectExceptionCode(1437679657);
95 
96  $eventDispatcher = new ‪MockEventDispatcher();
97  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
98 
99  (new ‪DatabaseUserPermissionCheck())->addData($input);
100  }
101 
102  #[Test]
104  {
105  $input = [
106  'tableName' => 'tt_content',
107  'command' => 'edit',
108  'vanillaUid' => 123,
109  'databaseRow' => [],
110  'parentPageRow' => [
111  'pid' => 321,
112  ],
113  ];
114  $this->beUserMock->method('isAdmin')->willReturn(false);
115  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
116  $this->beUserMock->method('calcPerms')->with(['pid' => 321])->willReturn(‪Permission::CONTENT_EDIT);
117  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
118 
119  $eventDispatcher = new ‪MockEventDispatcher();
120  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
121 
122  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
123 
124  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
125  }
126 
127  #[Test]
129  {
130  $input = [
131  'tableName' => 'pages',
132  'command' => 'edit',
133  'vanillaUid' => 123,
134  'databaseRow' => [
135  'uid' => 123,
136  'pid' => 321,
137  ],
138  ];
139  $this->beUserMock->method('isAdmin')->willReturn(false);
140  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
141  $this->beUserMock->method('calcPerms')->with($input['databaseRow'])->willReturn(‪Permission::NOTHING);
142 
143  $this->expectException(AccessDeniedPageEditException::class);
144  $this->expectExceptionCode(1437679336);
145 
146  $eventDispatcher = new ‪MockEventDispatcher();
147  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
148 
149  (new ‪DatabaseUserPermissionCheck())->addData($input);
150  }
151 
152  #[Test]
154  {
155  $input = [
156  'tableName' => 'pages',
157  'command' => 'edit',
158  'vanillaUid' => 123,
159  'databaseRow' => [
160  'uid' => 123,
161  'pid' => 321,
162  'doktype' => 1,
163  ],
164  'processedTca' => [
165  'ctrl' => [
166  'type' => 'doktype',
167  ],
168  ],
169  ];
170  $this->beUserMock->method('isAdmin')->willReturn(false);
171  $series = [
172  [['type' => 'tables_modify', 'value' => $input['tableName']], true],
173  [['type' => 'pagetypes_select', 'value' => $input['databaseRow']['doktype']], false],
174  ];
175  $this->beUserMock->method('check')->willReturnCallback(function (string $type, string|int $value) use (&$series): bool {
176  [$expectedArgs, $return] = array_shift($series);
177  self::assertSame($expectedArgs['type'], $type);
178  self::assertSame($expectedArgs['value'], $value);
179  return $return;
180  });
181  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
182  $this->beUserMock->method('calcPerms')->with($input['databaseRow'])->willReturn(‪Permission::ALL);
183 
184  $this->expectException(AccessDeniedPageEditException::class);
185  $this->expectExceptionCode(1437679336);
186 
187  $eventDispatcher = new ‪MockEventDispatcher();
188  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
189 
190  (new ‪DatabaseUserPermissionCheck())->addData($input);
191  }
192 
193  #[Test]
195  {
196  $input = [
197  'tableName' => 'pages',
198  'command' => 'edit',
199  'vanillaUid' => 123,
200  'databaseRow' => [
201  'uid' => 123,
202  'pid' => 321,
203  'doktype' => 1,
204  ],
205  'processedTca' => [
206  'ctrl' => [
207  'type' => 'doktype',
208  ],
209  ],
210  ];
211  $this->beUserMock->method('isAdmin')->willReturn(false);
212  $series = [
213  ['type' => 'tables_modify', 'value' => $input['tableName']],
214  ['type' => 'pagetypes_select', 'value' => $input['databaseRow']['doktype']],
215  ];
216  $this->beUserMock->method('check')->willReturnCallback(function (string $type, string|int $value) use (&$series): bool {
217  $expectedArgs = array_shift($series);
218  self::assertSame($expectedArgs['type'], $type);
219  self::assertSame($expectedArgs['value'], $value);
220  return true;
221  });
222  $this->beUserMock->method('calcPerms')->with($input['databaseRow'])->willReturn(‪Permission::PAGE_EDIT);
223  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
224 
225  $eventDispatcher = new ‪MockEventDispatcher();
226  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
227 
228  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
229 
230  self::assertSame(‪Permission::PAGE_EDIT, $result['userPermissionOnPage']);
231  }
232 
233  #[Test]
235  {
236  $input = [
237  'tableName' => 'tt_content',
238  'command' => 'edit',
239  'vanillaUid' => 123,
240  'databaseRow' => [
241  'uid' => 123,
242  'pid' => 0,
243  ],
244  ];
245  $this->beUserMock->method('isAdmin')->willReturn(false);
246  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
247  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
248  ‪$GLOBALS['TCA'][$input['tableName']]['ctrl']['security']['ignoreRootLevelRestriction'] = true;
249 
250  $eventDispatcher = new ‪MockEventDispatcher();
251  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
252 
253  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
254 
255  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
256  }
257 
258  #[Test]
260  {
261  $input = [
262  'tableName' => 'tt_content',
263  'command' => 'edit',
264  'vanillaUid' => 123,
265  'databaseRow' => [
266  'uid' => 123,
267  'pid' => 0,
268  ],
269  ];
270  $this->beUserMock->method('isAdmin')->willReturn(false);
271  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
272  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
273 
274  $this->expectException(AccessDeniedRootNodeException::class);
275  $this->expectExceptionCode(1437679856);
276 
277  $eventDispatcher = new ‪MockEventDispatcher();
278  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
279 
280  (new ‪DatabaseUserPermissionCheck())->addData($input);
281  }
282 
283  #[Test]
285  {
286  $input = [
287  'tableName' => 'tt_content',
288  'command' => 'edit',
289  'vanillaUid' => 123,
290  'databaseRow' => [],
291  'parentPageRow' => [
292  'uid' => 123,
293  'pid' => 321,
294  ],
295  ];
296  $this->beUserMock->method('isAdmin')->willReturn(false);
297  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
298  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::ALL);
299  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(false);
300 
301  $this->expectException(AccessDeniedEditInternalsException::class);
302  $this->expectExceptionCode(1437687404);
303 
304  $eventDispatcher = new ‪MockEventDispatcher();
305  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
306 
307  (new ‪DatabaseUserPermissionCheck())->addData($input);
308  }
309 
310  #[Test]
312  {
313  $input = [
314  'tableName' => 'tt_content',
315  'command' => 'new',
316  'vanillaUid' => 123,
317  'databaseRow' => [],
318  'parentPageRow' => [
319  'uid' => 123,
320  'pid' => 321,
321  ],
322  ];
323  $this->beUserMock->method('isAdmin')->willReturn(false);
324  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
325  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::NOTHING);
326 
327  $this->expectException(AccessDeniedContentEditException::class);
328  $this->expectExceptionCode(1437745759);
329 
330  $eventDispatcher = new ‪MockEventDispatcher();
331  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
332 
333  (new ‪DatabaseUserPermissionCheck())->addData($input);
334  }
335 
336  #[Test]
338  {
339  $input = [
340  'tableName' => 'pages',
341  'command' => 'new',
342  'vanillaUid' => 123,
343  'databaseRow' => [
344  'uid' => 'NEW123',
345  ],
346  'parentPageRow' => [
347  'uid' => 123,
348  'pid' => 321,
349  ],
350  ];
351  $this->beUserMock->method('isAdmin')->willReturn(false);
352  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
353  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::NOTHING);
354 
355  $this->expectException(AccessDeniedPageNewException::class);
356  $this->expectExceptionCode(1437745640);
357 
358  $eventDispatcher = new ‪MockEventDispatcher();
359  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
360 
361  (new ‪DatabaseUserPermissionCheck())->addData($input);
362  }
363 
364  #[Test]
366  {
367  $input = [
368  'tableName' => 'tt_content',
369  'command' => 'edit',
370  'vanillaUid' => 123,
371  'databaseRow' => [
372  'uid' => 5,
373  ],
374  'parentPageRow' => [
375  'uid' => 123,
376  'pid' => 321,
377  ],
378  ];
379  $this->beUserMock->method('isAdmin')->willReturn(false);
380  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
381  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::ALL);
382  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
383 
384  $this->expectException(AccessDeniedListenerException::class);
385  $this->expectExceptionCode(1662727149);
386 
387  $eventDispatcher = new ‪MockEventDispatcher();
388  $eventDispatcher->addListener(static function (‪ModifyEditFormUserAccessEvent $event) {
389  $event->‪denyUserAccess();
390  });
391  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
392 
393  (new ‪DatabaseUserPermissionCheck())->addData($input);
394  }
395 
396  #[Test]
398  {
399  $input = [
400  'tableName' => 'pages',
401  'command' => 'new',
402  'vanillaUid' => 123,
403  'databaseRow' => [
404  'uid' => 'NEW5',
405  ],
406  'parentPageRow' => [
407  'uid' => 123,
408  'pid' => 321,
409  ],
410  ];
411  $this->beUserMock->method('isAdmin')->willReturn(false);
412  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
413  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::CONTENT_EDIT);
414  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
415 
416  $eventDispatcher = new ‪MockEventDispatcher();
417  $eventDispatcher->addListener(static function (‪ModifyEditFormUserAccessEvent $event) {
418  $event->‪allowUserAccess();
419  });
420  GeneralUtility::addInstance(EventDispatcherInterface::class, $eventDispatcher);
421 
422  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
423 
424  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
425  }
426 
427  #[Test]
429  {
430  $input = [
431  'tableName' => 'pages',
432  'command' => 'new',
433  'vanillaUid' => 123,
434  'databaseRow' => [],
435  'parentPageRow' => [
436  'uid' => 123,
437  'pid' => 321,
438  ],
439  ];
440  $this->beUserMock->method('isAdmin')->willReturn(false);
441  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
442  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::PAGE_NEW);
443  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
444 
445  GeneralUtility::addInstance(EventDispatcherInterface::class, new ‪NoopEventDispatcher());
446 
447  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
448 
449  self::assertSame(‪Permission::PAGE_NEW, $result['userPermissionOnPage']);
450  }
451 
452  #[Test]
454  {
455  $input = [
456  'tableName' => 'tt_content',
457  'command' => 'new',
458  'vanillaUid' => 123,
459  'databaseRow' => [],
460  'parentPageRow' => [
461  'uid' => 123,
462  'pid' => 321,
463  ],
464  ];
465  $this->beUserMock->method('isAdmin')->willReturn(false);
466  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
467  $this->beUserMock->method('calcPerms')->with($input['parentPageRow'])->willReturn(‪Permission::CONTENT_EDIT);
468  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
469 
470  GeneralUtility::addInstance(EventDispatcherInterface::class, new ‪NoopEventDispatcher());
471 
472  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
473 
474  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
475  }
476 
477  #[Test]
479  {
480  $input = [
481  'tableName' => 'pages',
482  'command' => 'new',
483  'vanillaUid' => 123,
484  'databaseRow' => [],
485  'parentPageRow' => null,
486  ];
487  $this->beUserMock->method('isAdmin')->willReturn(false);
488  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
489  $this->beUserMock->method('recordEditAccessInternals')->with($input['tableName'], self::anything())->willReturn(true);
490  ‪$GLOBALS['TCA'][$input['tableName']]['ctrl']['security']['ignoreRootLevelRestriction'] = true;
491 
492  GeneralUtility::addInstance(EventDispatcherInterface::class, new ‪NoopEventDispatcher());
493 
494  $result = (new ‪DatabaseUserPermissionCheck())->addData($input);
495 
496  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
497  }
498 
499  #[Test]
501  {
502  $input = [
503  'tableName' => 'pages',
504  'command' => 'new',
505  'vanillaUid' => 123,
506  'databaseRow' => [],
507  'parentPageRow' => null,
508  ];
509 
510  $this->beUserMock->method('isAdmin')->willReturn(false);
511  $this->beUserMock->method('check')->with('tables_modify', $input['tableName'])->willReturn(true);
512 
513  $this->expectException(AccessDeniedRootNodeException::class);
514  $this->expectExceptionCode(1437745221);
515 
516  GeneralUtility::addInstance(EventDispatcherInterface::class, new ‪NoopEventDispatcher());
517 
518  (new ‪DatabaseUserPermissionCheck())->addData($input);
519  }
520 }
‪TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseUserPermissionCheck
Definition: DatabaseUserPermissionCheck.php:38
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedContentEditException
Definition: AccessDeniedContentEditException.php:21
‪TYPO3\CMS\Backend\Form\Event\ModifyEditFormUserAccessEvent\denyUserAccess
‪denyUserAccess()
Definition: ModifyEditFormUserAccessEvent.php:53
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\setUp
‪setUp()
Definition: DatabaseUserPermissionCheckTest.php:43
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\$beUserMock
‪BackendUserAuthentication &MockObject $beUserMock
Definition: DatabaseUserPermissionCheckTest.php:41
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfUserHasNoTablesModifyPermissionForGivenTable
‪addDataThrowsExceptionIfUserHasNoTablesModifyPermissionForGivenTable()
Definition: DatabaseUserPermissionCheckTest.php:62
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_NEW
‪const PAGE_NEW
Definition: Permission.php:50
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoPagePermissions
‪addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoPagePermissions()
Definition: DatabaseUserPermissionCheckTest.php:128
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedRootNodeException
Definition: AccessDeniedRootNodeException.php:21
‪TYPO3\CMS\Core\Type\Bitmask\Permission\NOTHING
‪const NOTHING
Definition: Permission.php:30
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewPageIfPageNewIsDeniedAndHookAllowsAccess
‪addDataSetsUserPermissionsOnPageForNewPageIfPageNewIsDeniedAndHookAllowsAccess()
Definition: DatabaseUserPermissionCheckTest.php:397
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForAdminUser
‪addDataSetsUserPermissionsOnPageForAdminUser()
Definition: DatabaseUserPermissionCheckTest.php:52
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewContentRecordWithoutPermissions
‪addDataThrowsExceptionForNewContentRecordWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:311
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:26
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfRootNodeShouldBeEditedWithoutPermissions
‪addDataThrowsExceptionIfRootNodeShouldBeEditedWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:259
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedListenerException
Definition: AccessDeniedListenerException.php:23
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewPageWithoutPermissions
‪addDataThrowsExceptionForNewPageWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:337
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest
Definition: DatabaseUserPermissionCheckTest.php:40
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataAddsUserPermissionsOnPageIfTableIsPagesAndUserHasPagePermissions
‪addDataAddsUserPermissionsOnPageIfTableIsPagesAndUserHasPagePermissions()
Definition: DatabaseUserPermissionCheckTest.php:194
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedEditInternalsException
Definition: AccessDeniedEditInternalsException.php:21
‪TYPO3\CMS\Core\Type\Bitmask\Permission\ALL
‪const ALL
Definition: Permission.php:60
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoDoktypePermissions
‪addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoDoktypePermissions()
Definition: DatabaseUserPermissionCheckTest.php:153
‪TYPO3\CMS\Backend\Form\Event\ModifyEditFormUserAccessEvent
Definition: ModifyEditFormUserAccessEvent.php:27
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedTableModifyException
Definition: AccessDeniedTableModifyException.php:21
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForContentEditRecord
‪addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForContentEditRecord()
Definition: DatabaseUserPermissionCheckTest.php:234
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfRecordEditAccessInternalsReturnsFalse
‪addDataThrowsExceptionIfRecordEditAccessInternalsReturnsFalse()
Definition: DatabaseUserPermissionCheckTest.php:284
‪TYPO3\CMS\Backend\Form\Event\ModifyEditFormUserAccessEvent\allowUserAccess
‪allowUserAccess()
Definition: ModifyEditFormUserAccessEvent.php:45
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewRecordsOnRootLevelWithoutPermissions
‪addDataThrowsExceptionForNewRecordsOnRootLevelWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:500
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewContentRecord
‪addDataSetsUserPermissionsOnPageForNewContentRecord()
Definition: DatabaseUserPermissionCheckTest.php:453
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataAddsUserPermissionsOnPageForContentIfUserHasCorrespondingPermissions
‪addDataAddsUserPermissionsOnPageForContentIfUserHasCorrespondingPermissions()
Definition: DatabaseUserPermissionCheckTest.php:103
‪TYPO3\CMS\Core\EventDispatcher\NoopEventDispatcher
Definition: NoopEventDispatcher.php:29
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:55
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfHookDeniesAccess
‪addDataThrowsExceptionIfHookDeniesAccess()
Definition: DatabaseUserPermissionCheckTest.php:365
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:40
‪TYPO3\CMS\Core\Tests\Unit\Fixtures\EventDispatcher\MockEventDispatcher
Definition: MockEventDispatcher.php:30
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewPage
‪addDataSetsUserPermissionsOnPageForNewPage()
Definition: DatabaseUserPermissionCheckTest.php:428
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedPageNewException
Definition: AccessDeniedPageNewException.php:21
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForNewContentRecord
‪addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForNewContentRecord()
Definition: DatabaseUserPermissionCheckTest.php:478
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedPageEditException
Definition: AccessDeniedPageEditException.php:21
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfUserHasNoContentEditPermissionsOnPage
‪addDataThrowsExceptionIfUserHasNoContentEditPermissionsOnPage()
Definition: DatabaseUserPermissionCheckTest.php:77
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18