/** * Resolve username/realm to password/hash/etc. * * @param string $username Username * @param string $realm Authentication Realm * @return string|false User's shared secret, if the user is found in the * realm, false otherwise. */ public function resolve($username, $realm) { require_once 'models/DbTable/User.php'; $userTable = new Default_Model_DbTable_User(); $user = $userTable->fetchRow(array('username = ?' => $username)); if (null === $user) { return false; } // passwords aren't implemented, currently the same as the username if ('digest' == $this->getAuthType()) { return hash('md5', $username . ':' . $realm . ':' . $username); } if ('basic' == $this->getAuthType()) { return $username; } return false; }
/** * @param array $value * @return boolean indicating is any valid data of interest was passed */ protected function _isValid($value) { $partialHappened = false; $isPost = 'post' == $this->getMethodContext(); // validate that the name is set if (isset($value['name'])) { $partialHappened = true; $validate = new Zend_Validate_StringLength(array(1, 50)); if (!$validate->isValid($value['name'])) { $this->_addValidateMessagesAndErrors($validate); } } elseif ($isPost) { $this->_error(self::NAME_REQUIRED); } // validate that the username is set, and doesn't already exist if (isset($value['username'])) { $partialHappened = true; $validate = new Zend_Validate_StringLength(array(1, 50)); if (!$validate->isValid($value['username'])) { $this->_addValidateMessagesAndErrors($validate); } $userTable = new Default_Model_DbTable_User(); if ($userTable->fetchRow(array('username = ?' => $value['username']))) { $this->_error(self::USERNAME_ALREADY_EXISTS, $value['username']); } } elseif ($isPost) { $this->_error(self::USERNAME_REQUIRED); } return $partialHappened; }
/** * @param array $prop * @return array */ public function post(array $prop) { require_once 'models/DbTable/User.php'; $userTable = new Default_Model_DbTable_User(); if (isset($prop['user_id'])) { $user = $userTable->fetchRow(array('id = ?' => $prop['user_id'])); $user = $user ? (object) $user : false; } elseif (isset($prop['user_username'])) { $user = $userTable->fetchRow(array('username = ?' => $prop['user_username'])); $user = $user ? (object) $user : false; } else { $user = null; } $session = $this->getSession(); $session->unsetAll(); $session->realm = 'App'; $session->identity = $user ? (object) array('id' => $user->id, 'username' => $user->username, 'name' => $user->name) : null; require_once 'Zend/Auth.php'; Zend_Auth::getInstance()->getStorage()->write($session->identity); if (false === $user) { return null; } return $this->get(array('id' => 1)); }