services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  TYPO3\CMS\Backend\:
    resource: '../Classes/*'

  TYPO3\CMS\Backend\Command\LockBackendCommand:
    tags:
      - { name: 'console.command', command: 'backend:lock', description: 'Lock the TYPO3 Backend' }

  TYPO3\CMS\Backend\Command\UnlockBackendCommand:
    tags:
      - { name: 'console.command', command: 'backend:unlock', description: 'Unlock the TYPO3 Backend' }

  TYPO3\CMS\Backend\Command\ReferenceIndexUpdateCommand:
    tags:
      - { name: 'console.command', command: 'referenceindex:update', description: 'Update the reference index of TYPO3' }

  TYPO3\CMS\Backend\Command\ResetPasswordCommand:
    tags:
      - { name: 'console.command', command: 'backend:resetpassword', description: 'Trigger a password reset for a backend user', schedulable: false }

  TYPO3\CMS\Backend\Clipboard\Clipboard:
    shared: false
    public: true

  TYPO3\CMS\Backend\Template\ModuleTemplate:
    shared: false
    public: true

  TYPO3\CMS\Backend\Template\ModuleTemplateFactory:
    shared: false
    public: true

  TYPO3\CMS\Backend\Controller\LinkBrowserController:
    shared: false
    public: true

  TYPO3\CMS\Backend\Controller\File\ImageProcessController:
    shared: false
    public: true

  TYPO3\CMS\Backend\View\PageLayoutView:
    shared: false
    public: true

  TYPO3\CMS\Backend\History\RecordHistoryRollback:
    public: true

  TYPO3\CMS\Backend\Backend\Shortcut\ShortcutRepository:
    public: true

  TYPO3\CMS\Backend\View\AuthenticationStyleInformation:
    public: true

  TYPO3\CMS\Backend\Controller\BackendController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\PageLayoutController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\AboutController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\DummyController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\EditDocumentController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\FormSlugAjaxController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\LoginController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ResetPasswordController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\HelpController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\MfaConfigurationController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\MfaController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\MfaSetupController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\MfaAjaxController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\NewRecordController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\SiteConfigurationController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\SwitchUserController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ColumnSelectorController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ClipboardController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\Page\NewMultiplePagesController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\Page\SortSubPagesController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ContentElement\ElementHistoryController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ContentElement\ElementInformationController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ContentElement\MoveElementController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Controller\File\FileController:
    tags: ['backend.controller']

  TYPO3\CMS\Backend\Form\FormDataProvider\SiteDatabaseEditRow:
    public: true

  TYPO3\CMS\Backend\RecordList\ElementBrowserRecordList:
    shared: false
    public: true

  TYPO3\CMS\Backend\Resource\PublicUrlPrefixer:
    public: true

  TYPO3\CMS\Backend\Backend\ToolbarItems\ClearCacheToolbarItem:
    public: true

  TYPO3\CMS\Backend\Tree\View\ContentCreationPagePositionMap:
    public: true

  TYPO3\CMS\Backend\Tree\View\ContentMovingPagePositionMap:
    public: true

  # Category security checks for backend users
  TYPO3\CMS\Backend\Security\CategoryPermissionsAspect:
    tags:
      - name: event.listener
        identifier: 'backend-user-permissions'
        method: 'addUserPermissionsToCategoryTreeData'

  # Listener to provide information about column without a colPos set
  TYPO3\CMS\Backend\View\PageLayoutViewDrawEmptyColposContent:
    tags:
      - name: event.listener
        identifier: 'backend-empty-colpos'
