diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Form/Handler/ProfileFormHandler.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Form/Handler/ProfileFormHandler.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\UserBundle\Form\Handler; + +use Symfony\Component\Form\Form; +use Symfony\Component\HttpFoundation\Request; + +use FOS\UserBundle\Model\UserInterface; +use FOS\UserBundle\Model\UserManagerInterface; +use FOS\UserBundle\Form\Model\CheckPassword; + +class ProfileFormHandler +{ + protected $request; + protected $userManager; + protected $form; + + public function __construct(Form $form, Request $request, UserManagerInterface $userManager) + { + $this->form = $form; + $this->request = $request; + $this->userManager = $userManager; + } + + public function process(UserInterface $user) + { + $this->form->setData(new CheckPassword($user)); + + if ('POST' == $this->request->getMethod()) { + $this->form->bindRequest($this->request); + + if ($this->form->isValid()) { + $this->onSuccess($user); + + return true; + } + + // Reloads the user to reset its username. This is needed when the + // username or password have been changed to avoid issues with the + // security layer. + $this->userManager->reloadUser($user); + } + + return false; + } + + protected function onSuccess(UserInterface $user) + { + $this->userManager->updateUser($user); + } +}