public function testPasswordStrengthValidator()
 {
     $user = new User('*****@*****.**');
     // By default, an empty password is not allowed.
     $error = $this->userManager->validatePasswordStrength($user, '');
     $this->assertNotEmpty($error);
     // By default, any non-empty password is allowed.
     $error = $this->userManager->validatePasswordStrength($user, 'a');
     $this->assertNull($error);
     // Test setting a custom validator.
     $this->userManager->setPasswordStrengthValidator(function (User $user, $password) {
         if (strlen($password) < 2) {
             return 'Password must have at least 2 characters.';
         }
     });
     $error = $this->userManager->validatePasswordStrength($user, 'a');
     $this->assertEquals('Password must have at least 2 characters.', $error);
 }
 /**
  * Edit user action.
  *
  * @param Application $app
  * @param Request $request
  * @param int $id
  * @return Response
  * @throws NotFoundHttpException if no user is found with that ID.
  */
 public function editAction(Application $app, Request $request, $id)
 {
     $errors = array();
     $user = $this->userManager->getUser($id);
     if (!$user) {
         throw new NotFoundHttpException('No user was found with that ID.');
     }
     $customFields = $this->editCustomFields ?: array();
     if ($request->isMethod('POST')) {
         $user->setName($request->request->get('name'));
         $user->setEmail($request->request->get('email'));
         if ($request->request->has('username')) {
             $user->setUsername($request->request->get('username'));
         }
         if ($request->request->get('password')) {
             if ($request->request->get('password') != $request->request->get('confirm_password')) {
                 $errors['password'] = '******'t match.';
             } else {
                 if ($error = $this->userManager->validatePasswordStrength($user, $request->request->get('password'))) {
                     $errors['password'] = $error;
                 } else {
                     $this->userManager->setUserPassword($user, $request->request->get('password'));
                 }
             }
         }
         if ($app['security']->isGranted('ROLE_ADMIN') && $request->request->has('roles')) {
             $user->setRoles($request->request->get('roles'));
         }
         foreach (array_keys($customFields) as $customField) {
             if ($request->request->has($customField)) {
                 $user->setCustomField($customField, $request->request->get($customField));
             }
         }
         $errors += $this->userManager->validate($user);
         if (empty($errors)) {
             $this->userManager->update($user);
             $msg = 'Saved account information.' . ($request->request->get('password') ? ' Changed password.' : '');
             $app['session']->getFlashBag()->set('alert', $msg);
         }
     }
     return $app['twig']->render($this->getTemplate('edit'), array('layout_template' => $this->getTemplate('layout'), 'error' => implode("\n", $errors), 'user' => $user, 'available_roles' => array('ROLE_PEON', 'ROLE_SUPER_PEON', 'ROLE_ADMIN'), 'image_url' => $this->getGravatarUrl($user->getEmail()), 'customFields' => $customFields, 'isUsernameRequired' => $this->isUsernameRequired));
 }