/**
  * @Annotations\Put("/users/{id}")
  *
  * @ParamConverter("updatedUser", converter="fos_rest.request_body")
  *
  * @param User $user
  * @param User $updatedUser
  */
 public function putUserAction(User $user, User $updatedUser)
 {
     $this->throwIfClientNot('backend');
     $errors = $this->validates($updatedUser, 'backend_user_edit');
     if (count($errors) > 0) {
         return $this->handleView(new View($errors, Response::HTTP_BAD_REQUEST));
     }
     $user->setUsername($updatedUser->getUsername());
     $user->setEmail($updatedUser->getEmail());
     $user->setPhoneNumber($updatedUser->getPhoneNumber());
     $user->setRoles($updatedUser->getRoles());
     $this->get('fos_user.user_manager')->updateUser($user);
     return $this->handleView(new View(array('id' => $user->getId()), Response::HTTP_OK));
 }
 public function load(ObjectManager $objectManager)
 {
     $u1 = new User();
     $u1->setUsername('allan');
     $u1->setEmail('*****@*****.**');
     $u1->setPlainPassword('plop');
     $u1->setRoles(array('ROLE_USER'));
     $u1->setConfirmationToken('123456');
     $u1->setEnabled(false);
     $u1->setLocked(true);
     $this->addReference('new-user', $u1);
     $u2 = new User();
     $u2->setUsername('Raphael');
     $u2->setEmail('*****@*****.**');
     $u2->setPlainPassword('plop');
     $u2->setRoles(array('ROLE_USER'));
     $u2->setPhoneNumber('123456789');
     $u2->setConfirmationToken('');
     $u2->setEnabled(true);
     $u2->setLocked(false);
     $this->addReference('user-without-confirmation-token', $u2);
     $u3 = new User();
     $u3->setUsername('Bobthesponge');
     $u3->setEmail('*****@*****.**');
     $u3->setPlainPassword('plop');
     $u3->setRoles(array('ROLE_USER'));
     $u3->setConfirmationToken('123456');
     $u3->setEnabled(true);
     $u3->setLocked(false);
     $this->addReference('user-with-confirmation-token', $u3);
     $u4 = new User();
     $u4->setUsername('admin');
     $u4->setEmail('*****@*****.**');
     $u4->setPlainPassword('admin');
     $u4->setRoles(['ROLE_ADMINPANEL']);
     $u4->setConfirmationToken('123456');
     $u4->setEnabled(true);
     $u4->setLocked(false);
     $this->addReference('admin', $u4);
     $objectManager->persist($u1);
     $objectManager->persist($u2);
     $objectManager->persist($u3);
     $objectManager->persist($u4);
     $objectManager->flush();
 }
 /**
  * change user's email or phone, with validation code received in previous step.
  *
  * @Annotations\Patch("/users/{id}/contact-info")
  */
 public function patchUserChangeContactInfoAction(User $user, Request $request)
 {
     $requestData = $this->requestIsJsonWithKeysOrThrow($request, ['new_contact_info', 'validation_code']);
     if ($requestData['validation_code'] !== $user->getConfirmationToken()) {
         throw new BadRequestHttpException('wrong validation code');
     }
     $contactInfo = $requestData['new_contact_info'];
     $manager = $this->get('fos_user.user_manager');
     $validator = $this->container->get('validator');
     $emailAssert = new Assert\Email();
     $emailAssert->message = 'bst.email.invalid';
     $errors = $validator->validateValue($contactInfo, $emailAssert);
     if (count($errors) === 0) {
         $this->get('logger')->info('updated email of ' . $user->getId() . ' with ' . $contactInfo);
         $user->setEmail($contactInfo);
         $manager->updateUser($user);
         return $this->handleView(new View());
     }
     // we set user directly here so we can reuse the validator
     // of User entity for phone number
     $phoneNumber = str_replace('+', '00', $contactInfo);
     $user->setPhoneNumber($phoneNumber);
     $errors = $validator->validate($user, ['phone_check']);
     if (count($errors) === 0) {
         $this->get('logger')->info('updated phone of ' . $user->getId() . ' with ' . $phoneNumber);
         $manager->updateUser($user);
         return $this->handleView(new View());
     }
     return $this->handleView(new View(['message' => 'bst.changecontactinfo.invalid'], Response::HTTP_BAD_REQUEST));
 }