Blame view
sources/apps/user_openid_provider/provider.php
1.76 KB
|
42e4f8d60
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php
OCP\App::checkAppEnabled('user_openid_provider');
set_include_path(get_include_path().PATH_SEPARATOR.__DIR__.'/3rdparty');
require_once 'Zend/OpenId/Provider.php';
if (!isset($_REQUEST['openid_mode'])) {
OCP\Template::printGuestPage('user_openid_provider', 'main');
die;
}
$session = new OC_OpenIdProviderUserSession();
$storage = new OC_OpenIdProviderStorage();
$server = new Zend_OpenId_Provider(null, null, $session, $storage);
if (OCP\User::isLoggedIn() and !$session->getLoggedInUser()) {
$session->setLoggedInUser(OCP\Util::linkToAbsolute('', '?').OCP\User::getUser());
}
if (isset($_GET['openid_action']) and $_GET['openid_action']=='login') {
unset($_GET['openid_action']);
$params = '?'.Zend_OpenId::paramsToQuery($_GET);
$next = OCP\Util::linkToRemote('openid_provider') . $params;
$loginPage = OCP\Util::linkToAbsolute( '', 'index.php' ).'?redirect_url='
.urlencode($next);
header('Location: '.$loginPage );
} else if (isset($_GET['openid_action']) and $_GET['openid_action'] == 'trust') {
OCP\User::checkLoggedIn();
if (isset($_POST['allow'])) {
if (isset($_POST['forever'])) {
$server->allowSite($server->getSiteRoot($_GET));
}
$server->respondToConsumer($_GET);
} else if (isset($_POST['deny'])) {
if (isset($_POST['forever'])) {
$server->denySite($server->getSiteRoot($_GET));
}
Zend_OpenId::redirect($_GET['openid_return_to'],
array('openid.mode'=>'cancel'));
} else {
$tmpl = new OCP\Template( 'user_openid_provider', 'trust', 'user');
$tmpl->assign('site', $server->getSiteRoot($_GET));
$tmpl->assign('openid', $server->getLoggedInUser());
$tmpl->printPage();
}
} else {
$ret = $server->handle();
if (is_string($ret)) {
echo $ret;
} else if ($ret !== true) {
header('HTTP/1.0 403 Forbidden');
echo 'Forbidden';
}
}
|