Issue #3261248 by paulocs, andregp, andypost, longwave, quietone: Remove deprecated user.module functions

merge-requests/1969/merge
catch 2022-03-15 12:47:59 +00:00
parent 099ba9fcd3
commit dcc51c80a2
22 changed files with 28 additions and 536 deletions

View File

@ -94,7 +94,7 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface {
* @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
* The event dispatcher.
*/
public function __construct(MaintenanceModeInterface $maintenance_mode, ConfigFactoryInterface $config_factory, TranslationInterface $translation, UrlGeneratorInterface $url_generator, AccountInterface $account, BareHtmlPageRendererInterface $bare_html_page_renderer, MessengerInterface $messenger, EventDispatcherInterface $event_dispatcher = NULL) {
public function __construct(MaintenanceModeInterface $maintenance_mode, ConfigFactoryInterface $config_factory, TranslationInterface $translation, UrlGeneratorInterface $url_generator, AccountInterface $account, BareHtmlPageRendererInterface $bare_html_page_renderer, MessengerInterface $messenger, EventDispatcherInterface $event_dispatcher) {
$this->maintenanceMode = $maintenance_mode;
$this->config = $config_factory;
$this->stringTranslation = $translation;
@ -102,10 +102,6 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface {
$this->account = $account;
$this->bareHtmlPageRenderer = $bare_html_page_renderer;
$this->messenger = $messenger;
if (!$event_dispatcher) {
@trigger_error('Calling MaintenanceModeSubscriber::__construct() without the $event_dispatcher argument is deprecated in drupal:9.4.0 and the $event_dispatcher argument will be required in drupal:10.0.0. See https://www.drupal.org/node/3255799', E_USER_DEPRECATED);
$event_dispatcher = \Drupal::service('event_dispatcher');
}
$this->eventDispatcher = $event_dispatcher;
}

View File

@ -35,12 +35,8 @@ class MaintenanceMode implements MaintenanceModeInterface {
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
*/
public function __construct(StateInterface $state, ConfigFactoryInterface $config_factory = NULL) {
public function __construct(StateInterface $state, ConfigFactoryInterface $config_factory) {
$this->state = $state;
if (!$config_factory) {
@trigger_error('Calling MaintenanceMode::__construct() without the $config_factory argument is deprecated in drupal:9.4.0 and the $config_factory argument will be required in drupal:10.0.0. See https://www.drupal.org/node/3255815', E_USER_DEPRECATED);
$config_factory = \Drupal::service('config.factory');
}
$this->config = $config_factory;
}

View File

@ -53,17 +53,13 @@ class Cookie implements AuthenticationProviderInterface, EventSubscriberInterfac
* The session configuration.
* @param \Drupal\Core\Database\Connection $connection
* The database connection.
* @param \Drupal\Core\Messenger\MessengerInterface|null $messenger
* @param \Drupal\Core\Messenger\MessengerInterface $messenger
* The messenger.
*/
public function __construct(SessionConfigurationInterface $session_configuration, Connection $connection, MessengerInterface $messenger = NULL) {
public function __construct(SessionConfigurationInterface $session_configuration, Connection $connection, MessengerInterface $messenger) {
$this->sessionConfiguration = $session_configuration;
$this->connection = $connection;
$this->messenger = $messenger;
if ($this->messenger === NULL) {
@trigger_error('The MessengerInterface must be passed to ' . __NAMESPACE__ . '\Cookie::__construct(). It was added in drupal:9.2.0 and will be required before drupal:10.0.0.', E_USER_DEPRECATED);
$this->messenger = \Drupal::messenger();
}
}
/**

View File

@ -114,11 +114,7 @@ class UserAuthenticationController extends ControllerBase implements ContainerIn
* @param \Psr\Log\LoggerInterface $logger
* A logger instance.
*/
public function __construct($user_flood_control, UserStorageInterface $user_storage, CsrfTokenGenerator $csrf_token, UserAuthInterface $user_auth, RouteProviderInterface $route_provider, Serializer $serializer, array $serializer_formats, LoggerInterface $logger) {
if (!$user_flood_control instanceof UserFloodControlInterface) {
@trigger_error('Passing the flood service to ' . __METHOD__ . ' is deprecated in drupal:9.1.0 and is replaced by user.flood_control in drupal:10.0.0. See https://www.drupal.org/node/3067148', E_USER_DEPRECATED);
$user_flood_control = \Drupal::service('user.flood_control');
}
public function __construct(UserFloodControlInterface $user_flood_control, UserStorageInterface $user_storage, CsrfTokenGenerator $csrf_token, UserAuthInterface $user_auth, RouteProviderInterface $route_provider, Serializer $serializer, array $serializer_formats, LoggerInterface $logger) {
$this->userFloodControl = $user_flood_control;
$this->userStorage = $user_storage;
$this->csrfToken = $csrf_token;

View File

@ -203,7 +203,7 @@ class Role extends ConfigEntityBase implements RoleInterface {
$valid_permissions = array_intersect($this->permissions, array_keys($permission_definitions));
$invalid_permissions = array_diff($this->permissions, $valid_permissions);
if (!empty($invalid_permissions) && !$this->get('skip_missing_permission_deprecation')) {
@trigger_error('Adding non-existent permissions to a role is deprecated in drupal:9.3.0 and triggers a runtime exception before drupal:10.0.0. The incorrect permissions are "' . implode('", "', $invalid_permissions) . '". Permissions should be defined in a permissions.yml file or a permission callback. See https://www.drupal.org/node/3193348', E_USER_DEPRECATED);
throw new \RuntimeException('Adding non-existent permissions to a role is not allowed. The incorrect permissions are "' . implode('", "', $invalid_permissions) . '".');
}
foreach ($valid_permissions as $permission) {
// Depend on the module that is providing this permissions.

View File

@ -2,7 +2,6 @@
namespace Drupal\user\EventSubscriber;
use Drupal\Core\Routing\RouteMatch;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Site\MaintenanceModeEvents;
use Drupal\Core\Site\MaintenanceModeInterface;
@ -43,33 +42,6 @@ class MaintenanceModeSubscriber implements EventSubscriberInterface {
$this->account = $account;
}
/**
* Logout users if site is in maintenance mode.
*
* @param \Symfony\Component\HttpKernel\Event\RequestEvent $event
* The event to process.
*
* @deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use
* \Drupal\user\EventSubscriber::onMaintenanceModeRequest() instead.
*
* @see https://www.drupal.org/node/3255799
*/
public function onKernelRequestMaintenance(RequestEvent $event) {
@trigger_error('\Drupal\user\EventSubscriber::onKernelRequestMaintenance() is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use \Drupal\user\EventSubscriber::onMaintenanceModeRequest() instead. See https://www.drupal.org/node/3255799', E_USER_DEPRECATED);
$request = $event->getRequest();
$route_match = RouteMatch::createFromRequest($request);
if ($this->maintenanceMode->applies($route_match)) {
// If the site is offline, log out unprivileged users.
if ($this->account->isAuthenticated() && !$this->maintenanceMode->exempt($this->account)) {
user_logout();
// Redirect to homepage.
$event->setResponse(
new RedirectResponse(Url::fromRoute('<front>')->toString())
);
}
}
}
/**
* Logout users if site is in maintenance mode and user is not exempt.
*

View File

@ -69,11 +69,7 @@ class UserLoginForm extends FormBase {
* @param \Drupal\Core\Render\BareHtmlPageRendererInterface $bare_html_renderer
* The renderer.
*/
public function __construct($user_flood_control, UserStorageInterface $user_storage, UserAuthInterface $user_auth, RendererInterface $renderer, BareHtmlPageRendererInterface $bare_html_renderer) {
if (!$user_flood_control instanceof UserFloodControlInterface) {
@trigger_error('Passing the flood service to ' . __METHOD__ . ' is deprecated in drupal:9.1.0 and is replaced by user.flood_control in drupal:10.0.0. See https://www.drupal.org/node/3067148', E_USER_DEPRECATED);
$user_flood_control = \Drupal::service('user.flood_control');
}
public function __construct(UserFloodControlInterface $user_flood_control, UserStorageInterface $user_storage, UserAuthInterface $user_auth, RendererInterface $renderer, BareHtmlPageRendererInterface $bare_html_renderer) {
$this->userFloodControl = $user_flood_control;
$this->userStorage = $user_storage;
$this->userAuth = $user_auth;

View File

@ -75,20 +75,12 @@ class UserPasswordForm extends FormBase {
* @param \Drupal\Component\Utility\EmailValidatorInterface $email_validator
* The email validator service.
*/
public function __construct(UserStorageInterface $user_storage, LanguageManagerInterface $language_manager, ConfigFactory $config_factory, FloodInterface $flood, TypedDataManagerInterface $typed_data_manager = NULL, EmailValidatorInterface $email_validator = NULL) {
public function __construct(UserStorageInterface $user_storage, LanguageManagerInterface $language_manager, ConfigFactory $config_factory, FloodInterface $flood, TypedDataManagerInterface $typed_data_manager, EmailValidatorInterface $email_validator) {
$this->userStorage = $user_storage;
$this->languageManager = $language_manager;
$this->configFactory = $config_factory;
$this->flood = $flood;
if (is_null($typed_data_manager)) {
@trigger_error('Calling ' . __METHOD__ . ' without the $typed_data_manager argument is deprecated in drupal:9.2.0 and will be required in drupal:10.0.0. See https://www.drupal.org/node/3189310', E_USER_DEPRECATED);
$typed_data_manager = \Drupal::typedDataManager();
}
$this->typedDataManager = $typed_data_manager;
if (is_null($email_validator)) {
@trigger_error('Calling ' . __METHOD__ . ' without the $email_validator argument is deprecated in drupal:9.2.0 and will be required in drupal:10.0.0. See https://www.drupal.org/node/3189310', E_USER_DEPRECATED);
$email_validator = \Drupal::service('email.validator');
}
$this->emailValidator = $email_validator;
}

View File

@ -1,70 +0,0 @@
<?php
namespace Drupal\Tests\user\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
/**
* Tests the JS components added to the PasswordConfirm render element.
*
* @group user
*/
class PasswordWidgetThemeFunctionTest extends WebDriverTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'password_theme_function_test';
/**
* {@inheritdoc}
*
* @todo Remove this class property in https://www.drupal.org/node/3217947.
*/
protected $failOnJavascriptConsoleErrors = FALSE;
/**
* {@inheritdoc}
*/
protected static $modules = ['user'];
/**
* User for testing.
*
* @var \Drupal\user\UserInterface
*/
protected $testUser;
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->assert = $this->assertSession();
// Create a user.
$this->testUser = $this->createUser();
$this->drupalLogin($this->testUser);
}
/**
* Tests password widget theme functions and its deprecations.
*
* @group legacy
*/
public function testPasswordConfirmWidgetJsComponents() {
$this->expectDeprecation('Javascript Deprecation: Returning <span> without data-drupal-selector="password-match-status-text" attribute is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/3152101');
$this->expectDeprecation('Javascript Deprecation: The js-password-strength__indicator class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__indicator with a data-drupal-selector="password-strength-indicator" attribute. See https://www.drupal.org/node/3152101');
$this->expectDeprecation('Javascript Deprecation: The js-password-strength__text class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__text with a data-drupal-selector="password-strength-text" attribute. See https://www.drupal.org/node/3152101');
$this->expectDeprecation('Javascript Deprecation: The message property is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. The markup should be constructed using messageTips property and Drupal.theme.passwordSuggestions. See https://www.drupal.org/node/3130352');
$assert_session = $this->assertSession();
$this->drupalGet($this->testUser->toUrl('edit-form'));
$this->assertNotNull($assert_session->waitForText('Overridden passwordStrength:'));
$assert_session->elementTextContains('css', '.password-strength__meter', 'Overridden passwordStrength:');
$assert_session->elementTextContains('css', '.password-confirm-message', 'Overridden passwordConfirmMessage:');
$this->getSession()->getPage()->fillField('pass[pass1]', 'a');
$assert_session->elementTextContains('css', '.password-suggestions', 'Overridden passwordSuggestions:');
}
}

View File

@ -150,14 +150,4 @@ class UserRoleConditionTest extends KernelTestBase {
$this->assertEquals(new FormattableMarkup('The user is a member of @roles', ['@roles' => $this->role->label()]), $condition->summary());
}
/**
* @group legacy
*/
public function testLegacy() {
$this->expectDeprecation('Passing context values to plugins via configuration is deprecated in drupal:9.1.0 and will be removed before drupal:10.0.0. Instead, call ::setContextValue() on the plugin itself. See https://www.drupal.org/node/3120980');
// Test Constructor injection.
$condition = $this->manager->createInstance('user_role', ['roles' => [RoleInterface::AUTHENTICATED_ID => RoleInterface::AUTHENTICATED_ID], 'context' => ['user' => $this->authenticated]]);
$this->assertTrue($condition->execute(), 'Constructor injection of context and configuration working as anticipated.');
}
}

View File

@ -1,52 +0,0 @@
<?php
namespace Drupal\Tests\user\Kernel\Controller;
use Drupal\Core\Access\CsrfTokenGenerator;
use Drupal\Core\Flood\FloodInterface;
use Drupal\Core\Routing\RouteProviderInterface;
use Drupal\KernelTests\KernelTestBase;
use Drupal\user\Controller\UserAuthenticationController;
use Drupal\user\UserAuthInterface;
use Drupal\user\UserStorageInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Serializer\Serializer;
/**
* @coversDefaultClass \Drupal\user\Controller\UserController
* @group user
*/
class UserAuthenticationControllerTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = ['user'];
/**
* @group legacy
*/
public function testConstructorDeprecations() {
$this->expectDeprecation('Passing the flood service to Drupal\user\Controller\UserAuthenticationController::__construct is deprecated in drupal:9.1.0 and is replaced by user.flood_control in drupal:10.0.0. See https://www.drupal.org/node/3067148');
$flood = $this->prophesize(FloodInterface::class);
$user_storage = $this->prophesize(UserStorageInterface::class);
$csrf_token = $this->prophesize(CsrfTokenGenerator::class);
$user_auth = $this->prophesize(UserAuthInterface::class);
$route_provider = $this->prophesize(RouteProviderInterface::class);
$serializer = $this->prophesize(Serializer::class);
$serializer_formats = [];
$logger = $this->prophesize(LoggerInterface::class);
$controller = new UserAuthenticationController(
$flood->reveal(),
$user_storage->reveal(),
$csrf_token->reveal(),
$user_auth->reveal(),
$route_provider->reveal(),
$serializer->reveal(),
$serializer_formats,
$logger->reveal()
);
$this->assertNotNull($controller);
}
}

View File

@ -1,44 +0,0 @@
<?php
namespace Drupal\Tests\user\Kernel\Form;
use Drupal\Core\Flood\FloodInterface;
use Drupal\Core\Render\RendererInterface;
use Drupal\Core\Render\BareHtmlPageRendererInterface;
use Drupal\KernelTests\KernelTestBase;
use Drupal\user\Form\UserLoginForm;
use Drupal\user\UserAuthInterface;
use Drupal\user\UserStorageInterface;
/**
* @coversDefaultClass \Drupal\user\Form\UserLoginForm
* @group user
*/
class UserLoginFormTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = ['user'];
/**
* @group legacy
*/
public function testConstructorDeprecations() {
$this->expectDeprecation('Passing the flood service to Drupal\user\Form\UserLoginForm::__construct is deprecated in drupal:9.1.0 and is replaced by user.flood_control in drupal:10.0.0. See https://www.drupal.org/node/3067148');
$flood = $this->prophesize(FloodInterface::class);
$user_storage = $this->prophesize(UserStorageInterface::class);
$user_auth = $this->prophesize(UserAuthInterface::class);
$renderer = $this->prophesize(RendererInterface::class);
$bare_html_renderer = $this->prophesize(BareHtmlPageRendererInterface::class);
$form = new UserLoginForm(
$flood->reveal(),
$user_storage->reveal(),
$user_auth->reveal(),
$renderer->reveal(),
$bare_html_renderer->reveal()
);
$this->assertNotNull($form);
}
}

View File

@ -1,25 +0,0 @@
<?php
namespace Drupal\Tests\user\Kernel;
use Drupal\KernelTests\KernelTestBase;
/**
* Tests legacy user functionality.
*
* @group user
* @group legacy
*/
class UserLegacyTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = ['user'];
public function testUserPassword() {
$this->expectDeprecation('user_password() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Drupal\Core\Password\PasswordGeneratorInterface::generate() instead. See https://www.drupal.org/node/3153113');
$this->assertNotEmpty(user_password());
}
}

View File

@ -107,17 +107,6 @@ class UserMailNotifyTest extends EntityKernelTestBase {
$this->assertEmpty($this->getMails());
}
/**
* Tests the deprecated $langcode argument to _user_mail_notify().
*
* @group legacy
*/
public function testUserMailNotifyLangcodeDeprecation() {
$account = $this->createUser();
$this->expectDeprecation('Specifying the notification language using the $langcode parameter is deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. Omit the parameter. See https://www.drupal.org/node/3187082');
_user_mail_notify('password_reset', $account, $account->getPreferredLangcode());
}
/**
* Tests recovery email content and token langcode is aligned.
*/

View File

@ -28,19 +28,18 @@ class UserRoleEntityTest extends KernelTestBase {
$this->assertEquals(['a', 'b', 'c'], $role->getPermissions());
}
/**
* @group legacy
*/
public function testGrantingNonExistentPermission() {
$role = Role::create(['id' => 'test_role', 'label' => 'Test role']);
// A single permission that does not exist.
$this->expectDeprecation('Adding non-existent permissions to a role is deprecated in drupal:9.3.0 and triggers a runtime exception before drupal:10.0.0. The incorrect permissions are "does not exist". Permissions should be defined in a permissions.yml file or a permission callback. See https://www.drupal.org/node/3193348');
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Adding non-existent permissions to a role is not allowed. The incorrect permissions are "does not exist".');
$role->grantPermission('does not exist')
->save();
// A multiple permissions that do not exist.
$this->expectDeprecation('Adding non-existent permissions to a role is deprecated in drupal:9.3.0 and triggers a runtime exception before drupal:10.0.0. The incorrect permissions are "does not exist", "also does not exist". Permissions should be defined in a permissions.yml file or a permission callback. See https://www.drupal.org/node/3193348');
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Adding non-existent permissions to a role is not allowed. The incorrect permissions are "does not exist, also does not exist".');
$role->grantPermission('does not exist')
->grantPermission('also does not exist')
->save();

View File

@ -1,91 +0,0 @@
/**
* @file
* Overrides password theme functions for testing.
*/
((Drupal) => {
/**
* Constructs a password strength message.
*
* @param {object} passwordSettings
* An object containing password related settings and translated text to
* display.
* @param {string} passwordSettings.strengthTitle
* The title that precedes the strength text.
*
* @return {string}
* Markup for password strength message.
*/
Drupal.theme.passwordStrength = ({ strengthTitle }) => {
const strengthIndicator =
'<span>Overridden passwordStrength:</span><div class="password-strength__indicator js-password-strength__indicator the-prior-class-is-deprecated" data-drupal-selector="a-distinct-absence-of-password-strength-indicator"></div>';
const strengthText =
'<span class="password-strength__text js-password-strength__text the-prior-class-is-deprecated" data-drupal-selector="a-distinct-absence-of-password-strength-text"></span>';
return `
<div class="password-strength">
<div class="password-strength__meter" data-drupal-selector="password-strength-meter">${strengthIndicator}</div>
<div aria-live="polite" aria-atomic="true" class="password-strength__title">${strengthTitle} ${strengthText}</div>
</div>
`;
};
/**
* Constructs password suggestions tips.
*
* @param {object} passwordSettings
* An object containing password related settings and translated text to
* display.
* @param {string} passwordSettings.hasWeaknesses
* The title that precedes tips.
* @param {Array.<string>} tips
* Array containing the tips.
*
* @return {string}
* Markup for password suggestions.
*/
Drupal.theme.passwordSuggestions = ({ hasWeaknesses }, tips) =>
`<div class="password-suggestions">Overridden passwordSuggestions: ${
tips.length
? `${hasWeaknesses}<ul><li>${tips.join('</li><li>')}</li></ul>`
: ''
}</div>`;
/**
* Constructs a password confirm message element.
*
* @param {object} passwordSettings
* An object containing password related settings and translated text to
* display.
* @param {string} passwordSettings.confirmTitle
* The translated confirm description that labels the actual confirm text.
*
* @return {string}
* Markup for the password confirm message.
*/
Drupal.theme.passwordConfirmMessage = ({ confirmTitle }) => {
const confirmTextWrapper =
'<span>Overridden passwordConfirmMessage:</span><span data-drupal-selector="a-distinct-absence-of-password-match-status-text"></span>';
return `<div aria-live="polite" aria-atomic="true" class="password-confirm-message" data-drupal-selector="password-confirm-message">${confirmTitle} ${confirmTextWrapper}</div>`;
};
/**
* Confirm deprecation of property in evaluatePasswordStrength() return.
*
* @type {Drupal~behavior}
*
* @prop {Drupal~behaviorAttach} attach
* Attaches a check for the deprecated `message` property in the object
* returned by Drupal.evaluatePasswordStrength().
*/
Drupal.behaviors.passwordThemeFunctionTest = {
attach(context, settings) {
const strength = Drupal.evaluatePasswordStrength(
'password',
settings.password,
);
// eslint-disable-next-line no-unused-vars
const { message } = strength;
},
};
})(Drupal);

View File

@ -1,47 +0,0 @@
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(Drupal => {
Drupal.theme.passwordStrength = _ref => {
let {
strengthTitle
} = _ref;
const strengthIndicator = '<span>Overridden passwordStrength:</span><div class="password-strength__indicator js-password-strength__indicator the-prior-class-is-deprecated" data-drupal-selector="a-distinct-absence-of-password-strength-indicator"></div>';
const strengthText = '<span class="password-strength__text js-password-strength__text the-prior-class-is-deprecated" data-drupal-selector="a-distinct-absence-of-password-strength-text"></span>';
return `
<div class="password-strength">
<div class="password-strength__meter" data-drupal-selector="password-strength-meter">${strengthIndicator}</div>
<div aria-live="polite" aria-atomic="true" class="password-strength__title">${strengthTitle} ${strengthText}</div>
</div>
`;
};
Drupal.theme.passwordSuggestions = (_ref2, tips) => {
let {
hasWeaknesses
} = _ref2;
return `<div class="password-suggestions">Overridden passwordSuggestions: ${tips.length ? `${hasWeaknesses}<ul><li>${tips.join('</li><li>')}</li></ul>` : ''}</div>`;
};
Drupal.theme.passwordConfirmMessage = _ref3 => {
let {
confirmTitle
} = _ref3;
const confirmTextWrapper = '<span>Overridden passwordConfirmMessage:</span><span data-drupal-selector="a-distinct-absence-of-password-match-status-text"></span>';
return `<div aria-live="polite" aria-atomic="true" class="password-confirm-message" data-drupal-selector="password-confirm-message">${confirmTitle} ${confirmTextWrapper}</div>`;
};
Drupal.behaviors.passwordThemeFunctionTest = {
attach(context, settings) {
const strength = Drupal.evaluatePasswordStrength('password', settings.password);
const {
message
} = strength;
}
};
})(Drupal);

View File

@ -1,7 +0,0 @@
name: 'Password Theme Function Test theme'
type: theme
base theme: stark
description: 'Tests theme functions'
version: VERSION
libraries:
- password_theme_function_test/password-theme-functions

View File

@ -1,6 +0,0 @@
password-theme-functions:
js:
js/password-theme-functions.js: {}
dependencies:
- core/drupal
- user/drupal.user

View File

@ -76,16 +76,9 @@
Drupal.theme('passwordConfirmMessage', settings.password),
);
let $passwordMatchStatus = $passwordConfirmMessage
const $passwordMatchStatus = $passwordConfirmMessage
.find('[data-drupal-selector="password-match-status-text"]')
.first();
if ($passwordMatchStatus.length === 0) {
$passwordMatchStatus = $passwordConfirmMessage.find('span').first();
Drupal.deprecationError({
message:
'Returning <span> without data-drupal-selector="password-match-status-text" attribute is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/3152101',
});
}
const $confirmInputParent = $confirmInput
.parent()
@ -133,27 +126,9 @@
password.$strengthBar = $passwordStrength
.find('[data-drupal-selector="password-strength-indicator"]')
.first();
if (password.$strengthBar.length === 0) {
password.$strengthBar = $passwordStrength
.find('.js-password-strength__indicator')
.first();
Drupal.deprecationError({
message:
'The js-password-strength__indicator class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__indicator with a data-drupal-selector="password-strength-indicator" attribute. See https://www.drupal.org/node/3152101',
});
}
password.$strengthTextWrapper = $passwordStrength
.find('[data-drupal-selector="password-strength-text"]')
.first();
if (password.$strengthTextWrapper.length === 0) {
password.$strengthTextWrapper = $passwordStrength
.find('.js-password-strength__text')
.first();
Drupal.deprecationError({
message:
'The js-password-strength__text class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__text with a data-drupal-selector="password-strength-text" attribute. See https://www.drupal.org/node/3152101',
});
}
password.$suggestions = $(
Drupal.theme('passwordSuggestions', settings.password, []),
);
@ -385,17 +360,11 @@
'</li><li>',
)}</li></ul>`;
return Drupal.deprecatedProperty({
target: {
strength,
message: msg,
indicatorText,
indicatorClass,
messageTips,
},
deprecatedProperty: 'message',
message:
'The message property is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. The markup should be constructed using messageTips property and Drupal.theme.passwordSuggestions. See https://www.drupal.org/node/3130352',
});
return {
strength,
indicatorText,
indicatorClass,
messageTips,
};
};
})(jQuery, Drupal);

View File

@ -33,15 +33,7 @@
const $passwordWidget = $mainInput.closest('.js-form-type-password-confirm');
const $confirmInput = $passwordWidget.find('input.js-password-confirm');
const $passwordConfirmMessage = $(Drupal.theme('passwordConfirmMessage', settings.password));
let $passwordMatchStatus = $passwordConfirmMessage.find('[data-drupal-selector="password-match-status-text"]').first();
if ($passwordMatchStatus.length === 0) {
$passwordMatchStatus = $passwordConfirmMessage.find('span').first();
Drupal.deprecationError({
message: 'Returning <span> without data-drupal-selector="password-match-status-text" attribute is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/3152101'
});
}
const $passwordMatchStatus = $passwordConfirmMessage.find('[data-drupal-selector="password-match-status-text"]').first();
const $confirmInputParent = $confirmInput.parent().addClass('confirm-parent').append($passwordConfirmMessage);
const passwordStrengthBarClassesToRemove = [cssClasses.passwordWeak || '', cssClasses.passwordFair || '', cssClasses.passwordGood || '', cssClasses.passwordStrong || ''].join(' ').trim();
const confirmTextWrapperClassesToRemove = [cssClasses.passwordsMatch || '', cssClasses.passwordsNotMatch || ''].join(' ').trim();
@ -51,23 +43,7 @@
if (settings.password.showStrengthIndicator) {
const $passwordStrength = $(Drupal.theme('passwordStrength', settings.password));
password.$strengthBar = $passwordStrength.find('[data-drupal-selector="password-strength-indicator"]').first();
if (password.$strengthBar.length === 0) {
password.$strengthBar = $passwordStrength.find('.js-password-strength__indicator').first();
Drupal.deprecationError({
message: 'The js-password-strength__indicator class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__indicator with a data-drupal-selector="password-strength-indicator" attribute. See https://www.drupal.org/node/3152101'
});
}
password.$strengthTextWrapper = $passwordStrength.find('[data-drupal-selector="password-strength-text"]').first();
if (password.$strengthTextWrapper.length === 0) {
password.$strengthTextWrapper = $passwordStrength.find('.js-password-strength__text').first();
Drupal.deprecationError({
message: 'The js-password-strength__text class is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Replace js-password-strength__text with a data-drupal-selector="password-strength-text" attribute. See https://www.drupal.org/node/3152101'
});
}
password.$suggestions = $(Drupal.theme('passwordSuggestions', settings.password, []));
password.$suggestions.hide();
$mainInputParent.append($passwordStrength);
@ -215,16 +191,11 @@
const messageTips = msg;
msg = `${passwordSettings.hasWeaknesses}<ul><li>${msg.join('</li><li>')}</li></ul>`;
return Drupal.deprecatedProperty({
target: {
strength,
message: msg,
indicatorText,
indicatorClass,
messageTips
},
deprecatedProperty: 'message',
message: 'The message property is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. The markup should be constructed using messageTips property and Drupal.theme.passwordSuggestions. See https://www.drupal.org/node/3130352'
});
return {
strength,
indicatorText,
indicatorClass,
messageTips
};
};
})(jQuery, Drupal);

View File

@ -218,25 +218,6 @@ function user_validate_name($name) {
}
}
/**
* Generate a random alphanumeric password.
*
* @param int $length
* The desired password length, in characters.
*
* @return string
* The generated random password.
*
* @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
* \Drupal\Core\Password\PasswordGeneratorInterface::generate() instead.
*
* @see https://www.drupal.org/node/3153113
*/
function user_password($length = 10) {
@trigger_error('user_password() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Drupal\Core\Password\PasswordGeneratorInterface::generate() instead. See https://www.drupal.org/node/3153113', E_USER_DEPRECATED);
return \Drupal::service('password_generator')->generate($length);
}
/**
* Determine the permissions for one or more roles.
*
@ -1036,11 +1017,6 @@ function user_role_revoke_permissions($rid, array $permissions = []) {
* @param \Drupal\Core\Session\AccountInterface $account
* The user object of the account being notified. Must contain at
* least the fields 'uid', 'name', and 'mail'.
* @param string $langcode
* (deprecated) (optional) Language code to use for the notification,
* overriding account language. Specifying the notification language using
* the $langcode parameter is deprecated in drupal:9.2.0 and is removed from
* drupal:10.0.0. Omit the parameter. See https://www.drupal.org/node/3187082
*
* @return array
* An array containing various information about the message.
@ -1048,14 +1024,10 @@ function user_role_revoke_permissions($rid, array $permissions = []) {
*
* @see user_mail_tokens()
*/
function _user_mail_notify($op, AccountInterface $account, $langcode = NULL) {
if ($langcode) {
@trigger_error('Specifying the notification language using the $langcode parameter is deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. Omit the parameter. See https://www.drupal.org/node/3187082', E_USER_DEPRECATED);
}
function _user_mail_notify($op, AccountInterface $account) {
if (\Drupal::config('user.settings')->get('notify.' . $op)) {
$params['account'] = $account;
$langcode = $langcode ? $langcode : $account->getPreferredLangcode();
// Get the custom site notification email to use as the from email address
// if it has been set.
$site_mail = \Drupal::config('system.site')->get('mail_notification');
@ -1067,7 +1039,7 @@ function _user_mail_notify($op, AccountInterface $account, $langcode = NULL) {
if (empty($site_mail)) {
$site_mail = ini_get('sendmail_from');
}
$mail = \Drupal::service('plugin.manager.mail')->mail('user', $op, $account->getEmail(), $langcode, $params, $site_mail);
$mail = \Drupal::service('plugin.manager.mail')->mail('user', $op, $account->getEmail(), $account->getPreferredLangcode(), $params, $site_mail);
if ($op == 'register_pending_approval') {
// If a user registered requiring admin approval, notify the admin, too.
// We use the site default language for this.