示例#1
0
 /**
  * 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')));
 }
示例#2
0
 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);
 }
示例#3
0
 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());
 }
示例#4
0
文件: Acl.php 项目: rexmac/zyndax
 /**
  * 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());
     }
 }
示例#5
0
 /**
  * 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
         }
     }
 }
示例#6
0
 /**
  * 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;
 }
示例#7
0
 /**
  * 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;
     }
 }