/** * @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)); }