Issue #3261248 by paulocs, andregp, andypost, longwave, quietone: Remove deprecated user.module functions
parent
099ba9fcd3
commit
dcc51c80a2
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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:');
|
||||
}
|
||||
|
||||
}
|
|
@ -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.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
|
@ -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);
|
|
@ -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
|
|
@ -1,6 +0,0 @@
|
|||
password-theme-functions:
|
||||
js:
|
||||
js/password-theme-functions.js: {}
|
||||
dependencies:
|
||||
- core/drupal
|
||||
- user/drupal.user
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue