Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 18 |
| MigratePassword | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
90 | |
0.00% |
0 / 18 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| check | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| needsRehash | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| hash | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
|||
| enableMd5Prefixing | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| disableMd5Prefixing | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getCountLog2 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\user\MigratePassword. | |
| */ | |
| namespace Drupal\user; | |
| use Drupal\Core\Password\PasswordInterface; | |
| /** | |
| * Replaces the original 'password' service in order to prefix the MD5 re-hashed | |
| * passwords with the 'U' flag. The new salted hash is recreated on first login | |
| * similarly to the D6->D7 upgrade path. | |
| */ | |
| class MigratePassword implements PasswordInterface { | |
| /** | |
| * The original password service. | |
| * | |
| * @var \Drupal\Core\Password\PasswordInterface | |
| */ | |
| protected $originalPassword; | |
| /** | |
| * Indicates if MD5 password prefixing is enabled. | |
| */ | |
| protected $enabled = FALSE; | |
| /** | |
| * Builds the replacement password service class. | |
| * | |
| * @param \Drupal\Core\Password\PasswordInterface $original_password | |
| * The password object. | |
| */ | |
| public function __construct(PasswordInterface $original_password) { | |
| $this->originalPassword = $original_password; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function check($password, $hash) { | |
| return $this->originalPassword->check($password, $hash); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function needsRehash($hash) { | |
| return $this->originalPassword->needsRehash($hash); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function hash($password) { | |
| $hash = $this->originalPassword->hash($password); | |
| // Allow prefixing only if the service was asked to prefix. Check also if | |
| // the $password pattern is conforming to a MD5 result. | |
| if ($this->enabled && preg_match('/^[0-9a-f]{32}$/', $password)) { | |
| $hash = 'U' . $hash; | |
| } | |
| return $hash; | |
| } | |
| /** | |
| * Enables the MD5 password prefixing. | |
| */ | |
| public function enableMd5Prefixing() { | |
| $this->enabled = TRUE; | |
| } | |
| /** | |
| * Disables the MD5 password prefixing. | |
| */ | |
| public function disableMd5Prefixing() { | |
| $this->enabled = FALSE; | |
| } | |
| /** | |
| * Implements the PhpassHashedPassword::getCountLog2() method. | |
| * | |
| * @todo: Revisit this whole alternate password service: | |
| * https://www.drupal.org/node/2540594. | |
| */ | |
| public function getCountLog2($setting) { | |
| return $this->originalPassword->getCountLog2($setting); | |
| } | |
| } |