← all change records
#2185941 Converted user_page() to a new style controller
Generated 2026-06-03 14:00 UTC
Matching rules (6)
- from: 'fn:user_login_form'
to: \Drupal\user\Form\UserLoginForm
- from: 'fn:user_page'
to: '\Drupal\user\Controller\UserController::userPage'
- from: 'fn:user_login_name_validate'
to: '\Drupal\user\Form\UserLoginForm::validateName'
- from: 'fn:user_login_authenticate_validate'
to: '\Drupal\user\Form\UserLoginForm::validateAuthentication'
- from: 'fn:user_login_final_validate'
to: '\Drupal\user\Form\UserLoginForm::validateFinal'
- from: 'fn:user_login_finalize'
to: 'fn:user_login_finalize'
Affected contrib projects (105)
| Project | legacy | in_flight | migrated | installs | files | adopters | |
|---|---|---|---|---|---|---|---|
| views_bulk_operations ↗ | 0 | 7 | 0 | 162,628 | 0 | 0 | |
| externalauth ↗ | 0 | 3 | 0 | 102,305 | 0 | 0 | |
| commerce ↗ | 0 | 4 | 0 | 38,572 | 0 | 0 | |
| openid_connect ↗ | 0 | 1 | 0 | 31,354 | 0 | 0 | |
| eca ↗ | 0 | 7 | 0 | 17,304 | 0 | 0 | |
| samlauth ↗ | 0 | 1 | 0 | 16,613 | 0 | 0 | |
| ldap ↗ | 0 | 0 | 2 | 16,100 | 0 | 0 | |
| tfa ↗ | 0 | 2 | 1 | 14,888 | 0 | 0 | |
| services ↗ | 0 | 2 | 0 | 14,537 | 0 | 0 | |
| hook_event_dispatcher ↗ | 0 | 3 | 0 | 10,587 | 0 | 0 | |
| persistent_login ↗ | 0 | 1 | 0 | 6,724 | 0 | 0 | |
| user_registrationpassword ↗ | 0 | 2 | 0 | 6,658 | 0 | 0 | |
| social_auth ↗ | 0 | 6 | 0 | 5,491 | 0 | 0 | |
| legal ↗ | 0 | 4 | 0 | 4,005 | 0 | 0 | |
| simple_pass_reset ↗ | 0 | 2 | 0 | 3,932 | 0 | 0 | |
| change_pwd_page ↗ | 0 | 3 | 0 | 3,255 | 0 | 0 | |
| saml_sp ↗ | 0 | 6 | 0 | 2,635 | 0 | 0 | |
| miniorange_saml ↗ | 0 | 3 | 0 | 2,573 | 0 | 0 | |
| email_tfa ↗ | 0 | 2 | 2 | 2,159 | 0 | 0 | |
| civicrm_entity ↗ | 0 | 4 | 0 | 1,972 | 0 | 0 | |
| miniorange_oauth_client ↗ | 0 | 3 | 0 | 1,089 | 0 | 0 | |
| basicshib ↗ | 0 | 12 | 0 | 890 | 0 | 0 | |
| auto_login_url ↗ | 0 | 5 | 0 | 881 | 0 | 0 | |
| miniorange_2fa ↗ | 0 | 5 | 0 | 781 | 0 | 0 | |
| ldap_sso ↗ | 0 | 2 | 0 | 778 | 0 | 0 | |
| synmap ↗ | 0 | 1 | 0 | 736 | 0 | 0 | |
| rest_password ↗ | 0 | 6 | 0 | 562 | 0 | 0 | |
| commerce_pos ↗ | 0 | 0 | 2 | 551 | 0 | 0 | |
| ldap_auth ↗ | 0 | 3 | 0 | 495 | 0 | 0 | |
| oauth_login_oauth2 ↗ | 0 | 4 | 0 | 435 | 0 | 0 | |
| auth0 ↗ | 0 | 7 | 0 | 422 | 0 | 0 | |
| lti_tool_provider ↗ | 0 | 3 | 0 | 404 | 0 | 0 | |
| multi_domain_login ↗ | 0 | 1 | 0 | 372 | 0 | 0 | |
| o365 ↗ | 0 | 1 | 3 | 354 | 0 | 0 | |
| webform_user_registration ↗ | 0 | 2 | 0 | 354 | 0 | 0 | |
| civicrm_drush ↗ | 0 | 4 | 0 | 347 | 0 | 0 | |
| cas_server ↗ | 0 | 4 | 0 | 277 | 0 | 0 | |
| bakery ↗ | 0 | 2 | 0 | 265 | 0 | 0 | |
| ip_login ↗ | 0 | 1 | 0 | 228 | 0 | 0 | |
| one_time_password ↗ | 0 | 2 | 0 | 215 | 0 | 0 | |
| social_auth_entra_id ↗ | 0 | 4 | 0 | 212 | 0 | 0 | |
| email_login_otp ↗ | 0 | 4 | 0 | 190 | 0 | 0 | |
| passwordless ↗ | 0 | 1 | 0 | 177 | 0 | 0 | |
| otp ↗ | 0 | 1 | 0 | 171 | 0 | 0 | |
| googlelogin ↗ | 0 | 4 | 0 | 131 | 0 | 0 | |
| azure_oauth_sso ↗ | 0 | 2 | 0 | 129 | 0 | 0 | |
| ldap_sso_auth ↗ | 0 | 2 | 0 | 118 | 0 | 0 | |
| alogin ↗ | 0 | 4 | 0 | 106 | 0 | 0 | |
| onelogin_integration ↗ | 0 | 8 | 0 | 85 | 0 | 0 | |
| access_code ↗ | 0 | 1 | 0 | 75 | 0 | 0 | |
| simple_ip_login ↗ | 0 | 2 | 0 | 74 | 0 | 0 | |
| domain_extras ↗ | 0 | 2 | 0 | 71 | 0 | 0 | |
| rest_register_verify_email ↗ | 0 | 1 | 0 | 68 | 0 | 0 | |
| rest_mail_login ↗ | 0 | 1 | 0 | 67 | 0 | 0 | |
| doccheck_basic ↗ | 0 | 2 | 0 | 66 | 0 | 0 | |
| wa ↗ | 0 | 3 | 0 | 61 | 0 | 0 | |
| domain_traversal ↗ | 0 | 3 | 0 | 58 | 0 | 0 | |
| i18n_sso ↗ | 0 | 1 | 0 | 58 | 0 | 0 | |
| ajax_login_popup ↗ | 0 | 2 | 0 | 51 | 0 | 0 | |
| tfa_duo ↗ | 0 | 1 | 0 | 49 | 0 | 0 | |
| intercept ↗ | 0 | 3 | 0 | 42 | 0 | 0 | |
| syncart ↗ | 0 | 1 | 0 | 41 | 0 | 0 | |
| user_switcher ↗ | 0 | 1 | 0 | 35 | 0 | 0 | |
| magic_link ↗ | 0 | 1 | 0 | 33 | 0 | 0 | |
| otp_verification ↗ | 0 | 2 | 0 | 33 | 0 | 0 | |
| opigno_mobile_app ↗ | 0 | 4 | 0 | 27 | 0 | 0 | |
| verification ↗ | 0 | 2 | 0 | 24 | 0 | 0 | |
| disable_drupal_login ↗ | 0 | 0 | 1 | 22 | 0 | 0 | |
| mutual_credit ↗ | 0 | 7 | 0 | 19 | 0 | 0 | |
| magic_code ↗ | 0 | 2 | 0 | 18 | 0 | 0 | |
| gsislogin ↗ | 0 | 4 | 0 | 16 | 0 | 0 | |
| password_reset_code ↗ | 0 | 1 | 0 | 16 | 0 | 0 | |
| patreon ↗ | 0 | 8 | 0 | 15 | 0 | 0 | |
| orcid ↗ | 0 | 2 | 0 | 12 | 0 | 0 | |
| sqrl ↗ | 0 | 2 | 0 | 12 | 0 | 0 | |
| otp_field ↗ | 0 | 1 | 0 | 11 | 0 | 0 | |
| decoupled_passkeys ↗ | 0 | 1 | 0 | 10 | 0 | 0 | |
| mutli_step_login ↗ | 0 | 4 | 0 | 10 | 0 | 0 | |
| ownid ↗ | 0 | 1 | 0 | 8 | 0 | 0 | |
| user_reference_invite ↗ | 0 | 5 | 0 | 8 | 0 | 0 | |
| verify_email ↗ | 0 | 2 | 0 | 8 | 0 | 0 | |
| authenticate_by_mail ↗ | 0 | 3 | 0 | 7 | 0 | 0 | |
| cas_account_link ↗ | 0 | 0 | 6 | 7 | 0 | 0 | |
| email_otp_login ↗ | 0 | 1 | 0 | 7 | 0 | 0 | |
| personal_digest ↗ | 0 | 3 | 0 | 7 | 0 | 0 | |
| steam_login ↗ | 0 | 3 | 0 | 7 | 0 | 0 | |
| decoupled_cookie_auth ↗ | 0 | 1 | 0 | 6 | 0 | 0 | |
| diba_integration ↗ | 0 | 1 | 0 | 6 | 0 | 0 | |
| login_flow ↗ | 0 | 1 | 0 | 6 | 0 | 0 | |
| openid_claveunica ↗ | 0 | 1 | 0 | 6 | 0 | 0 | |
| test_helpers ↗ | 0 | 5 | 0 | 6 | 0 | 0 | |
| sso_connector ↗ | 0 | 2 | 0 | 5 | 0 | 0 | |
| brapi ↗ | 0 | 2 | 0 | 4 | 0 | 0 | |
| commerce_oci_checkout ↗ | 0 | 1 | 0 | 4 | 0 | 0 | |
| fsk_demo ↗ | 0 | 0 | 1 | 4 | 0 | 0 | |
| cidr ↗ | 0 | 2 | 0 | 3 | 0 | 0 | |
| micro_sso ↗ | 0 | 1 | 0 | 3 | 0 | 0 | |
| mobile_number_login_otp ↗ | 0 | 1 | 0 | 3 | 0 | 0 | |
| azure_ad_login ↗ | 0 | 1 | 0 | 2 | 0 | 0 | |
| commerce_baselinker ↗ | 0 | 5 | 0 | 2 | 0 | 0 | |
| conreg ↗ | 0 | 5 | 0 | 2 | 0 | 0 | |
| useraccesshub ↗ | 0 | 1 | 0 | 2 | 0 | 0 | |
| commerce_mautic_connect ↗ | 0 | 1 | 0 | 1 | 0 | 0 | |
| ologin ↗ | 0 | 2 | 0 | 1 | 0 | 0 | |
| vereinonline_auth ↗ | 0 | 2 | 0 | 1 | 0 | 0 |