/**
     * 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));
    }