⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 provider.php

📁 Bug tracker, and reporter.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category   Zend * @package    Zend_OpenId * @subpackage Zend_OpenId_Provider * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License * @version    $Id: Provider.php 8064 2008-02-16 10:58:39Z thomas $ *//** * @see Zend_OpenId */require_once "Zend/OpenId.php";/** * @see Zend_OpenId_Extension */require_once "Zend/OpenId/Extension.php";/** * OpenID provider (server) implementation * * @category   Zend * @package    Zend_OpenId * @subpackage Zend_OpenId_Provider * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License */class Zend_OpenId_Provider{    /**     * Reference to an implementation of storage object     *     * @var Zend_OpenId_Provider_Storage $_storage     */    private $_storage;    /**     * Reference to an implementation of user object     *     * @var Zend_OpenId_Provider_User $_user     */    private $_user;    /**     * Time to live of association session in secconds     *     * @var integer $_sessionTtl     */    private $_sessionTtl;    /**     * URL to peform interactive user login     *     * @var string $_loginUrl     */    private $_loginUrl;    /**     * URL to peform interactive validation of consumer by user     *     * @var string $_trustUrl     */    private $_trustUrl;    /**     * Constructs a Zend_OpenId_Provider object with given parameters.     *     * @param string $loginUrl is an URL that provides login screen for     *  end-user (by default it is the same URL with additional GET variable     *  openid.action=login)     * @param string $trustUrl is an URL that shows a question if end-user     *  trust to given consumer (by default it is the same URL with additional     *  GET variable openid.action=trust)     * @param Zend_OpenId_Provider_User $user is an object for communication     *  with User-Agent and store information about logged-in user (it is a     *  Zend_OpenId_Provider_User_Session object by default)     * @param Zend_OpenId_Provider_Storage $storage is an object for keeping     *  persistent database (it is a Zend_OpenId_Provider_Storage_File object     *  by default)     * @param integer $sessionTtl is a default time to live for association     *   session in seconds (1 hour by default). Consumer must reestablish     *   association after that time.     */    public function __construct($loginUrl = null,                                $trustUrl = null,                                Zend_OpenId_Provider_User $user = null,                                Zend_OpenId_Provider_Storage $storage = null,                                $sessionTtl = 3600)    {        if ($loginUrl === null) {            $loginUrl = Zend_OpenId::selfUrl() . '?openid.action=login';        } else {            $loginUrl = Zend_OpenId::absoluteUrl($loginUrl);        }        $this->_loginUrl = $loginUrl;        if ($trustUrl === null) {            $trustUrl = Zend_OpenId::selfUrl() . '?openid.action=trust';        } else {            $trustUrl = Zend_OpenId::absoluteUrl($trustUrl);        }        $this->_trustUrl = $trustUrl;        if ($user === null) {            require_once "Zend/OpenId/Provider/User/Session.php";            $this->_user = new Zend_OpenId_Provider_User_Session();        } else {            $this->_user = $user;        }        if ($storage === null) {            require_once "Zend/OpenId/Provider/Storage/File.php";            $this->_storage = new Zend_OpenId_Provider_Storage_File();        } else {            $this->_storage = $storage;        }        $this->_sessionTtl = $sessionTtl;    }    /**     * Registers a new user with given $id and $password     * Returns true in case of success and false if user with given $id already     * exists     *     * @param string $id user identity URL     * @param string $password encoded user password     * @return bool     */    public function register($id, $password)    {        if (!Zend_OpenId::normalize($id) || empty($id)) {            return false;        }        return $this->_storage->addUser($id, md5($id.$password));    }    /**     * Returns true if user with given $id exists and false otherwise     *     * @param string $id user identity URL     * @return bool     */    public function hasUser($id) {        if (!Zend_OpenId::normalize($id)) {            return false;        }        return $this->_storage->hasUser($id);    }    /**     * Performs login of user with given $id and $password     * Returns true in case of success and false otherwise     *     * @param string $id user identity URL     * @param string $password user password     * @return bool     */    public function login($id, $password)    {        if (!Zend_OpenId::normalize($id)) {            return false;        }        if (!$this->_storage->checkUser($id, md5($id.$password))) {            return false;        }        $this->_user->setLoggedInUser($id);        return true;    }    /**     * Performs logout. Clears information about logged in user.     *     * @return void     */    public function logout()    {        $this->_user->delLoggedInUser();        return true;    }    /**     * Returns identity URL of current logged in user or false     *     * @return mixed     */    public function getLoggedInUser() {        return $this->_user->getLoggedInUser();    }    /**     * Retrieve consumer's root URL from request query.     * Returns URL or false in case of failure     *     * @param array $params query arguments     * @return mixed     */    public function getSiteRoot($params)    {        $version = 1.1;        if (isset($params['openid_ns']) &&            $params['openid_ns'] == Zend_OpenId::NS_2_0) {            $version = 2.0;        }        if ($version >= 2.0 && isset($params['openid_realm'])) {            $root = $params['openid_realm'];        } else if ($version < 2.0 && isset($params['openid_trust_root'])) {            $root = $params['openid_trust_root'];        } else if (isset($params['openid_return_to'])) {            $root = $params['openid_return_to'];        } else {            return false;        }        if (Zend_OpenId::normalizeUrl($root) && !empty($root)) {            return $root;        }        return false;    }    /**     * Allows consumer with given root URL to authenticate current logged     * in user. Returns true on success and false on error.     *     * @param string $root root URL     * @param mixed $extensions extension object or array of extensions objects     * @return bool     */    public function allowSite($root, $extensions=null)    {        $id = $this->getLoggedInUser();        if ($id === false) {            return false;        }        if ($extensions !== null) {            $data = array();            Zend_OpenId_Extension::forAll($extensions, 'getTrustData', $data);        } else {            $data = true;        }        $this->_storage->addSite($id, $root, $data);        return true;    }    /**     * Prohibit consumer with given root URL to authenticate current logged     * in user. Returns true on success and false on error.     *     * @param string $root root URL     * @return bool     */    public function denySite($root)    {        $id = $this->getLoggedInUser();        if ($id === false) {            return false;        }        $this->_storage->addSite($id, $root, false);        return true;    }    /**     * Delete consumer with given root URL from known sites of current logged     * in user. Next time this consumer will try to authenticate the user,     * Provider will ask user's confirmation.     * Returns true on success and false on error.     *     * @param string $root root URL     * @return bool     */    public function delSite($root)    {        $id = $this->getLoggedInUser();        if ($id === false) {            return false;        }        $this->_storage->addSite($id, $root, null);        return true;    }    /**     * Returns list of known consumers for current logged in user or false     * if he is not logged in.     *     * @return mixed     */    public function getTrustedSites()    {        $id = $this->getLoggedInUser();        if ($id === false) {            return false;        }        return $this->_storage->getTrustedSites($id);    }    /**     * Handles HTTP request from consumer     *     * @param array $params GET or POST variables. If this parameter is omited     *  or set to null, then $_GET or $_POST superglobal variable is used     *  according to REQUEST_METHOD.     * @param mixed $extensions extension object or array of extensions objects     * @param Zend_Controller_Response_Abstract $response an optional response     *  object to perform HTTP or HTML form redirection     * @return mixed     */    public function handle($params=null, $extensions=null,                           Zend_Controller_Response_Abstract $response = null)    {        if ($params === null) {            if ($_SERVER["REQUEST_METHOD"] == "GET") {                $params = $_GET;            } else if ($_SERVER["REQUEST_METHOD"] == "POST") {                $params = $_POST;            } else {                return false;            }        }        $version = 1.1;        if (isset($params['openid_ns']) &&            $params['openid_ns'] == Zend_OpenId::NS_2_0) {            $version = 2.0;        }        if (isset($params['openid_mode'])) {            if ($params['openid_mode'] == 'associate') {                $response = $this->_associate($version, $params);                $ret = '';                foreach ($response as $key => $val) {                    $ret .= $key . ':' . $val . "\n";                }                return $ret;            } else if ($params['openid_mode'] == 'checkid_immediate') {                $ret = $this->_checkId($version, $params, 1, $extensions, $response);                if (is_bool($ret)) return $ret;                if (!empty($params['openid_return_to'])) {                    Zend_OpenId::redirect($params['openid_return_to'], $ret, $response);                }                return true;            } else if ($params['openid_mode'] == 'checkid_setup') {                $ret = $this->_checkId($version, $params, 0, $extensions, $response);                if (is_bool($ret)) return $ret;                if (!empty($params['openid_return_to'])) {                    Zend_OpenId::redirect($params['openid_return_to'], $ret, $response);                }                return true;            } else if ($params['openid_mode'] == 'check_authentication') {                $response = $this->_checkAuthentication($version, $params);                $ret = '';                foreach ($response as $key => $val) {                    $ret .= $key . ':' . $val . "\n";                }                return $ret;            }        }        return false;    }    /**     * Generates a secret key for given hash function, returns RAW key or false     * if function is not supported     *     * @param string $func hash function (sha1 or sha256)     * @return mixed     */    protected function _genSecret($func)    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -