/** * Add user auth fieldset * * @return void */ private function _addUserAuthFieldset() { $this->addElement('text', 'username', array('filters' => array('HtmlEntities', 'StringTrim', 'StringToLower'), 'validators' => array(array('StringLength', false, array(3, 20))), 'required' => true, 'label' => 'Username:'******'password', 'password', array('filters' => array('StringTrim'), 'validators' => array(array('StringLength', false, array(6, 255)), array('Regex', false, array('pattern' => '/[a-z]\\d|\\d[a-z]/', 'messages' => array(Zend_Validate_Regex::NOT_MATCH => 'Password must contain one letter, one number, and at least 6 characters.', Zend_Validate_Regex::ERROROUS => 'Internal application error. Please try again.')))), 'required' => true, 'label' => 'Password:'******'password', 'passwordConfirm', array('filters' => array('StringTrim'), 'validators' => array(array('Identical', false, array('token' => 'password'))), 'required' => true, 'ignore' => true, 'label' => 'Confirm password:'******'select', 'role', array('filters' => array('StringTrim'), 'validators' => array(), 'required' => true, 'label' => 'Role:', 'multiOptions' => AclRoleService::getOptionsForSelect(true, false, AclRoleService::findAllExcludingGuest()))); $this->addDisplayGroup(array('username', 'password', 'passwordConfirm', 'role'), 'userAuth', array('legend' => 'Login Information', 'decorators' => array('FormElements', array('HtmlTag', array('tag' => 'ol')), 'Fieldset'))); }
public function setUp() { parent::setUp(); Zend_Registry::set('staticSalt', sha1(mt_rand())); $this->_authUser = UserTest::createRandomTestUser(); $this->_authUser->setUsername('Admin'); $this->_authUser->setPassword(UserService::encryptPassword('password', $this->_authUser->getSalt())); AclRoleService::create($this->_authUser->getRole()); UserService::create($this->_authUser); }
public function testUpdate() { $testEntity = AclRoleTest::createTestAclRole(); self::$entityManager->persist($testEntity); self::$entityManager->flush(); $this->assertNotEquals('fubar', $testEntity->getName()); $testEntity->setName('fubar'); AclRoleService::update(); $entities = self::$entityManager->createQuery('SELECT e FROM Rexmac\\Zyndax\\Entity\\AclRole e')->execute(); $this->assertEquals('fubar', $entities[0]->getName()); }
/** * Initializes roles * * @return void */ private function _initRoles() { $this->_guestRole = AclRoleService::findOneByName('Guest'); $this->addRole(new Zend_Acl_Role($this->_guestRole->getName())); $roles = AclRoleService::find(); #unset($roles[$this->_guestRole->getId()]); foreach ($roles as $role) { if ($role->getId() === $this->_guestRole->getId()) { continue; } $this->addRole(new Zend_Acl_Role($role->getName()), $this->_guestRole->getName()); } }
/** * Check action * * @return void */ public function checkAction() { $request = $this->getRequest(); $params = $request->getParams(); $result = null; $user = null; if (isset($params['userId'])) { $user = UserService::findOneById($params['userId']); unset($params['userId']); } foreach ($params as $key => $value) { switch ($key) { case 'username': if (null !== $user && $user->getUsername() === $value) { $result = true; } else { $result = null === UserService::findOneByUsername(strtolower($value)) && null === AclRoleService::findOneByName(strtolower($value)); } break; case 'email': if ($user && $user->getEmail() === $value) { $result = true; } else { $result = null === UserService::findOneByEmail(strtolower($value)); } break; } if ($result !== null) { $this->getHelper('layout')->disableLayout(); $this->getHelper('ViewRenderer')->setNoRender(); #$jsonData = Zend_Json::encode($result); $jsonData = Zend_Json::encode(array($key, $result)); $this->getResponse()->setBody($jsonData); break; // Exit for-loop early } } }
/** * Update User entity * * @param User $user * @param array $data * @return void */ private function _updateUser(User $user, array $data) { if (isset($data['newPassword']) && '' != $data['newPassword']) { // Verify old password #if(!UserService::verifyPassword($this->_user, $data['password'])) { # throw new Exception('Current password is invalid'); #} $data['password'] = UserService::encryptPassword($data['newPassword']); } else { $data['password'] = $user->getPassword(); } unset($data['newPassword']); unset($data['newPasswordConfirm']); if (isset($data['role'])) { $data['role'] = AclRoleService::findOneById($data['role']); } if (isset($data['timeZone'])) { $data['timeZone'] = TimeZoneService::findOneById($data['timeZone']); } // Track changes $changes = array(); foreach ($data as $key => $newValue) { if ($key === 'userId') { continue; } $oldValue = $user->{'get' . ucfirst($key)}(); Logger::debug(__METHOD__ . ":: {$key}"); Logger::debug(__METHOD__ . ":: OLD => " . (is_object($oldValue) ? get_class($oldValue) : var_export($oldValue, true))); Logger::debug(__METHOD__ . ":: NEW => " . (is_object($newValue) ? get_class($newValue) : var_export($newValue, true))); // Only update changed properties, and keep track of the changes as well if ($this->_valueChanged($oldValue, $newValue)) { Logger::debug(__METHOD__ . ":: {$key} has changed"); Logger::debug(__METHOD__ . ":: OLD => " . (is_object($oldValue) ? get_class($oldValue) : var_export($oldValue, true))); Logger::debug(__METHOD__ . ":: NEW => " . (is_object($newValue) ? get_class($newValue) : var_export($newValue, true))); $oldVal = $oldValue; $newVal = $newValue; if (is_object($newValue)) { if (isset($oldValue)) { $oldVal = $oldValue->getName(); } else { $oldVal = ''; } $newVal = $newValue->getName(); } elseif (is_object($oldValue)) { $oldVal = $oldValue->getName(); } $changes[] = array('item' => $key, 'oldValue' => $oldVal, 'newValue' => $newVal); // Set new value $user->{'set' . ucfirst($key)}($newValue); } } UserService::update(); // Any changes to record? if (count($changes) > 0) { $description = ''; foreach ($changes as $change) { $description .= sprintf('%s changed from "%s" to "%s".', $change['item'], $change['oldValue'] === 0 ? '0' : $change['oldValue'], $change['newValue']) . PHP_EOL; } UserEditEventService::create(array('user' => $user, 'editor' => $this->_user, 'ip' => $this->getRequest()->getServer('REMOTE_ADDR'), 'date' => new DateTime(), 'description' => rtrim($description))); return true; } return false; }
/** * Insert test data into test DB. * * @return void */ private static function insertTestData() { // Insert test data $roles = array('admin' => AclRoleService::create(array('name' => 'Administrator', 'description' => 'Site Administrator')), 'user' => AclRoleService::create(array('name' => 'User', 'description' => 'Regular user')), 'guest' => AclRoleService::create(array('name' => 'Guest', 'description' => 'Anonymous guest'))); $resources = array('default' => AclResourceService::create(array('identifier' => 'mvc:default:all', 'name' => 'Global non-admin access')), 'userLogin' => AclResourceService::create(array('identifier' => 'mvc:default:user:login', 'name' => 'User login')), 'admin' => AclResourceService::create(array('identifier' => 'mvc:admin', 'name' => 'Admin interface'))); AclPermissionService::create(array('role' => $roles['guest'], 'resource' => $resources['default'], 'name' => 'view')); AclPermissionService::create(array('role' => $roles['guest'], 'resource' => $resources['userLogin'], 'name' => 'view')); AclPermissionService::create(array('role' => $roles['admin'], 'resource' => $resources['admin'], 'name' => 'view')); #AclPermissionService::create(array('role' => $roles['admin'], 'resource' => $resources['adminIndex'], 'name' => 'view')); $userData = array(array('username' => 'admin', 'firstName' => 'admin', 'lastName' => 'istrator', 'role' => $roles['admin']), array('username' => 'testuser', 'firstName' => 'test', 'lastName' => 'er', 'role' => $roles['user'])); $timeZone = TimeZoneService::create(array('name' => 'America/Los_Angeles')); $users = array(); foreach ($userData as $u) { $user = UserService::create(array('role' => $u['role'], 'username' => $u['username'], 'password' => $u['username'], 'email' => $u['username'] . '@example.com', 'dateCreated' => new \DateTime(), 'lastConnect' => new \DateTime(), 'active' => 1, 'locked' => 0)); $user->setPassword(UserService::encryptPassword($user->getPassword())); $profile = UserProfileService::create(array('user' => $user, 'firstName' => $u['firstName'], 'lastName' => $u['lastName'], 'phone' => '408-555-5555', 'website' => '', 'timeZone' => $timeZone)); $user->setProfile($profile); #UserService::update(); #UserProfileService::update(); $users[$u['username']] = $user; } }