services:
  _defaults:
    autoconfigure: true
  access_check.permission:
    class: Drupal\user\Access\PermissionAccessCheck
    tags:
      - { name: access_check, applies_to: _permission }
  access_check.user.register:
    class: Drupal\user\Access\RegisterAccessCheck
    tags:
      - { name: access_check, applies_to: _access_user_register }
  access_check.user.role:
    class: Drupal\user\Access\RoleAccessCheck
    tags:
      - { name: access_check, applies_to: _role }
  access_check.user.login_status:
    class: Drupal\user\Access\LoginStatusCheck
    tags:
      - { name: access_check, applies_to: _user_is_logged_in }
  user.authentication.cookie:
    class: Drupal\user\Authentication\Provider\Cookie
    arguments: ['@session_configuration', '@database', '@messenger']
    tags:
      - { name: authentication_provider, provider_id: 'cookie', priority: 0, global: TRUE }
  user.data:
    class: Drupal\user\UserData
    arguments: ['@database']
    tags:
      - { name: backend_overridable }
  Drupal\user\UserDataInterface: '@user.data'
  user_maintenance_mode_subscriber:
    class: Drupal\user\EventSubscriber\MaintenanceModeSubscriber
    arguments: ['@maintenance_mode', '@current_user']
  user_access_denied_subscriber:
    class: Drupal\user\EventSubscriber\AccessDeniedSubscriber
    arguments: ['@current_user']
  user_last_access_subscriber:
    class: Drupal\user\EventSubscriber\UserRequestSubscriber
    arguments: ['@current_user', '@entity_type.manager', '@datetime.time']
  theme.negotiator.admin_theme:
    class: Drupal\user\Theme\AdminNegotiator
    arguments: ['@current_user', '@config.factory', '@entity_type.manager', '@router.admin_context']
    tags:
      - { name: theme_negotiator, priority: -40 }
  user.auth:
    class: Drupal\user\UserAuthentication
    arguments: ['@entity_type.manager', '@password']
  Drupal\user\UserAuthInterface: '@user.auth'
  user.permissions:
    class: Drupal\user\PermissionHandler
    arguments: ['@module_handler', '@string_translation', '@callable_resolver', '@extension.list.module']
  Drupal\user\PermissionHandlerInterface: '@user.permissions'
  user.current_user_context:
    class: Drupal\user\ContextProvider\CurrentUserContext
    arguments: ['@current_user', '@entity_type.manager']
    tags:
      - { name: 'context_provider' }
  user.toolbar_link_builder:
    class: Drupal\user\ToolbarLinkBuilder
    arguments: ['@current_user']
  Drupal\user\ToolbarLinkBuilder: '@user.toolbar_link_builder'
  user.flood_control:
    class: Drupal\user\UserFloodControl
    arguments: ['@flood', '@event_dispatcher', '@request_stack']
  Drupal\user\UserFloodControlInterface: '@user.flood_control'
  user.flood_subscriber:
    class: Drupal\user\EventSubscriber\UserFloodSubscriber
    arguments: ['@logger.channel.user']
  logger.channel.user:
    parent: logger.channel_base
    arguments: ['user']
  Drupal\user\ModulePermissionsLinkHelper: '@user.module_permissions_link_helper'
  user.module_permissions_link_helper:
    class: Drupal\user\ModulePermissionsLinkHelper
    arguments: ['@user.permissions', '@access_manager', '@extension.list.module']
  user.name_validator:
    class: Drupal\user\UserNameValidator
    arguments: ['@validation.basic_recursive_validator_factory', '@validation.constraint']
  Drupal\user\UserNameValidator: '@user.name_validator'
