示例#1
0
 /**
  * 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.');
     }
     if ($request->isMethod('POST')) {
         $user->setName($request->request->get('name'));
         $user->setEmail($request->request->get('email'));
         if ($request->request->get('password')) {
             if ($request->request->get('password') != $request->request->get('confirm_password')) {
                 $errors['password'] = '******'t match.';
             } 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'));
         }
         $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->editTemplate, array('layout_template' => $this->layoutTemplate, 'error' => implode("\n", $errors), 'user' => $user, 'available_roles' => array('ROLE_USER', 'ROLE_ADMIN'), 'image_url' => $this->getGravatarUrl($user->getEmail())));
 }
 public function testValidationWhenUsernameIsRequired()
 {
     $user = $this->userManager->createUser('*****@*****.**', 'password');
     $this->userManager->setUsernameRequired(true);
     $errors = $this->userManager->validate($user);
     $this->assertArrayHasKey('username', $errors);
     $user->setUsername('username');
     $errors = $this->userManager->validate($user);
     $this->assertEmpty($errors);
 }