public function testValidationBadEmail()
 {
     $form = new Admin_Form_Account();
     $postData = array('username' => 'newaccount', 'roleguest' => '1', 'email' => 'notAnEmail', 'password' => 'password', 'confirmPassword' => 'password');
     $this->assertFalse($form->isValid($postData));
     $errors = $form->getErrors();
     $this->assertTrue(isset($errors['email']));
     $this->assertTrue(in_array('emailAddressInvalidFormat', $errors['email']));
 }
Exemple #2
0
 /**
  * Updates account information.
  */
 public function updateAction()
 {
     if ($this->getRequest()->isPost()) {
         $button = $this->getRequest()->getParam('cancel');
         if (isset($button)) {
             $this->_helper->redirector('index');
             return;
         }
         $id = $this->getRequest()->getParam('id');
         $accountForm = new Admin_Form_Account($id);
         $postData = $this->getRequest()->getPost();
         $passwordChanged = true;
         if (empty($postData['password'])) {
             // modify to pass default validation
             // TODO think about better solution (validation context?)
             $postData['password'] = '******';
             $postData['confirmPassword'] = '******';
             $passwordChanged = false;
         }
         $account = new Opus_Account($id);
         $postData['oldLogin'] = strtolower($account->getLogin());
         if ($accountForm->isValid($postData)) {
             $account->setFirstName($postData['firstname']);
             $account->setLastName($postData['lastname']);
             $account->setEmail($postData['email']);
             $oldLogin = strtolower($account->getLogin());
             // update login name
             $newLogin = $postData['username'];
             if ($newLogin !== $oldLogin) {
                 $account->setLogin($newLogin);
                 $loginChanged = true;
             } else {
                 $loginChanged = false;
             }
             // update password
             if ($passwordChanged) {
                 $password = $postData['password'];
                 $account->setPassword($password);
             }
             // update roles
             $newRoles = Admin_Form_Account::parseSelectedRoles($postData);
             // TODO optimize code
             $hasAdministratorRole = false;
             foreach ($newRoles as $role) {
                 if (strtolower($role->getDisplayName()) === 'administrator') {
                     $hasAdministratorRole = true;
                     break;
                 }
             }
             $currentUser = Zend_Auth::getInstance()->getIdentity();
             $isCurrentUser = $currentUser === $oldLogin ? true : false;
             if (!$hasAdministratorRole && $isCurrentUser) {
                 $newRoles[] = Opus_UserRole::fetchByName('administrator');
             }
             $account->setRole($newRoles);
             $account->store();
             if ($isCurrentUser && ($loginChanged || $passwordChanged)) {
                 Zend_Auth::getInstance()->clearIdentity();
             }
         } else {
             $actionUrl = $this->view->url(array('action' => 'update', 'id' => $id));
             $accountForm->setAction($actionUrl);
             $this->view->form = $accountForm;
             $this->view->title = 'admin_account_edit';
             return $this->renderScript('account/edit.phtml');
         }
     }
     $this->_helper->redirector('index');
 }