public function setRandomPassword($username)
{
$password = false;
/** @var UsersRepository $repo */
$repo = $this->app['storage']->getRepository('Bolt\\Storage\\Entity\\Users');
if ($userEntity = $repo->getUser($username)) {
$password = $this->app['randomgenerator']->generateString(12);
$userEntity->setPassword($password);
$userEntity->setShadowpassword(null);
$userEntity->setShadowtoken(null);
$userEntity->setShadowvalidity(null);
$this->app['storage']->getRepository('Bolt\\Storage\\Entity\\Users')->save($userEntity);
$this->app['logger.system']->info("Password for user '{$userEntity->getUsername()}' was reset via Nut.", ['event' => 'authentication']);
}
return $password;
}
public function testSetRandomPassword() { $app = $this->getApp(); $this->addDefaultUser($app); $entityName = 'Bolt\\Storage\\Entity\\Users'; $repo = $app['storage']->getRepository($entityName); $logger = $this->getMock('\\Monolog\\Logger', ['info'], ['testlogger']); $logger->expects($this->atLeastOnce())->method('info')->with($this->equalTo("Password for user 'admin' was reset via Nut.")); $app['logger.system'] = $logger; $password = new Password($app); $newPass = $password->setRandomPassword('admin'); $userEntity = $repo->getUser('admin'); $crypt = new PasswordLib(); $compare = $crypt->verifyPasswordHash($newPass, $userEntity->getPassword()); $this->assertTrue($compare); $this->assertEmpty($userEntity->getShadowpassword()); $this->assertEmpty($userEntity->getShadowtoken()); $this->assertNull($userEntity->getShadowvalidity()); }