X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOpenID%2Fopenid.php;h=25811d88b20d297c8bbf080962136dba594fe572;hb=250221ff7fae28baad1d0411144c2bfe53c3641e;hp=4ce350f7737a56d0480e6440d4e1f9a6ef0a0148;hpb=819d33210d298de74b64dc7ead79e9d9b223b12e;p=quix0rs-gnu-social.git
diff --git a/plugins/OpenID/openid.php b/plugins/OpenID/openid.php
index 4ce350f773..25811d88b2 100644
--- a/plugins/OpenID/openid.php
+++ b/plugins/OpenID/openid.php
@@ -17,9 +17,9 @@
* along with this program. If not, see .
*/
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/plugins/OpenID/User_openid.php');
+if (!defined('STATUSNET')) {
+ exit(1);
+}
require_once('Auth/OpenID.php');
require_once('Auth/OpenID/Consumer.php');
@@ -27,7 +27,7 @@ require_once('Auth/OpenID/Server.php');
require_once('Auth/OpenID/SReg.php');
require_once('Auth/OpenID/MySQLStore.php');
-# About one year cookie expiry
+// About one year cookie expiry
define('OPENID_COOKIE_EXPIRY', round(365.25 * 24 * 60 * 60));
define('OPENID_COOKIE_KEY', 'lastusedopenid');
@@ -36,7 +36,7 @@ function oid_store()
{
static $store = null;
if (!$store) {
- # Can't be called statically
+ // Can't be called statically
$user = new User();
$conn = $user->getDatabaseConnection();
$store = new Auth_OpenID_MySQLStore($conn);
@@ -85,15 +85,16 @@ function oid_get_last()
function oid_link_user($id, $canonical, $display)
{
+ global $_PEAR;
$oid = new User_openid();
$oid->user_id = $id;
$oid->canonical = $canonical;
$oid->display = $display;
- $oid->created = DB_DataObject_Cast::dateTime();
+ $oid->created = common_sql_now();
if (!$oid->insert()) {
- $err = PEAR::getStaticProperty('DB_DataObject','lastError');
+ $err = &$_PEAR->getStaticProperty('DB_DataObject','lastError');
return false;
}
@@ -103,9 +104,9 @@ function oid_link_user($id, $canonical, $display)
function oid_get_user($openid_url)
{
$user = null;
- $oid = User_openid::staticGet('canonical', $openid_url);
+ $oid = User_openid::getKV('canonical', $openid_url);
if ($oid) {
- $user = User::staticGet('id', $oid->user_id);
+ $user = User::getKV('id', $oid->user_id);
}
return $user;
}
@@ -130,13 +131,16 @@ function oid_check_immediate($openid_url, $backto=null)
function oid_authenticate($openid_url, $returnto, $immediate=false)
{
+ $openid_url = Auth_OpenID::normalizeUrl($openid_url);
+ if (!common_valid_http_url($openid_url)) {
+ throw new ClientException(_m('No valid URL provided for OpenID.'));
+ }
$consumer = oid_consumer();
if (!$consumer) {
// TRANS: OpenID plugin server error.
- common_server_error(_m('Cannot instantiate OpenID consumer object.'));
- return false;
+ throw new ServerException(_m('Cannot instantiate OpenID consumer object.'));
}
common_ensure_session();
@@ -147,12 +151,12 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
if (!$auth_request) {
common_log(LOG_ERR, __METHOD__ . ": mystery fail contacting $openid_url");
// TRANS: OpenID plugin message. Given when an OpenID is not valid.
- return _m('Not a valid OpenID.');
+ throw new ServerException(_m('Not a valid OpenID.'));
} else if (Auth_OpenID::isFailure($auth_request)) {
common_log(LOG_ERR, __METHOD__ . ": OpenID fail to $openid_url: $auth_request->message");
// TRANS: OpenID plugin server error. Given when the OpenID authentication request fails.
// TRANS: %s is the failure message.
- return sprintf(_m('OpenID failure: %s'), $auth_request->message);
+ throw new ServerException(sprintf(_m('OpenID failure: %s.'), $auth_request->message));
}
$sreg_request = Auth_OpenID_SRegRequest::build(// Required
@@ -182,26 +186,37 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
$trust_root = common_root_url(true);
$process_url = common_local_url($returnto);
- if ($auth_request->shouldSendRedirect()) {
+ // Net::OpenID::Server as used on LiveJournal appears to incorrectly
+ // reject POST requests for data submissions that OpenID 1.1 specs
+ // as GET, although 2.0 allows them:
+ // https://rt.cpan.org/Public/Bug/Display.html?id=42202
+ //
+ // Our OpenID libraries would have switched in the redirect automatically
+ // if it were detecting 1.1 compatibility mode, however the server is
+ // advertising itself as 2.0-compatible, so we got switched to the POST.
+ //
+ // Since the GET should always work anyway, we'll just take out the
+ // autosubmitter for now.
+ //
+ //if ($auth_request->shouldSendRedirect()) {
$redirect_url = $auth_request->redirectURL($trust_root,
$process_url,
$immediate);
- if (!$redirect_url) {
- } else if (Auth_OpenID::isFailure($redirect_url)) {
+ if (Auth_OpenID::isFailure($redirect_url)) {
// TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected.
// TRANS: %s is the failure message.
- return sprintf(_m('Could not redirect to server: %s'), $redirect_url->message);
- } else {
- common_redirect($redirect_url, 303);
+ throw new ServerException(sprintf(_m('Could not redirect to server: %s.'), $redirect_url->message));
}
+ common_redirect($redirect_url, 303);
+ /*
} else {
// Generate form markup and render it.
$form_id = 'openid_message';
$form_html = $auth_request->formMarkup($trust_root, $process_url,
$immediate, array('id' => $form_id));
- # XXX: This is cheap, but things choke if we don't escape ampersands
- # in the HTML attributes
+ // XXX: This is cheap, but things choke if we don't escape ampersands
+ // in the HTML attributes
$form_html = preg_replace('/&/', '&', $form_html);
@@ -219,9 +234,10 @@ function oid_authenticate($openid_url, $returnto, $immediate=false)
$action->handle(array('action' => 'autosubmit'));
}
}
+ */
}
-# Half-assed attempt at a module-private function
+// Half-assed attempt at a module-private function
function _oid_print_instructions()
{
@@ -250,16 +266,16 @@ function oid_update_user($user, $sreg)
if (!empty($sreg['country'])) {
if ($sreg['postcode']) {
- # XXX: use postcode to get city and region
- # XXX: also, store postcode somewhere -- it's valuable!
+ // XXX: use postcode to get city and region
+ // XXX: also, store postcode somewhere -- it's valuable!
$profile->location = $sreg['postcode'] . ', ' . $sreg['country'];
} else {
$profile->location = $sreg['country'];
}
}
- # XXX save language if it's passed
- # XXX save timezone if it's passed
+ // XXX save language if it's passed
+ // XXX save timezone if it's passed
if (!$profile->update($orig_profile)) {
// TRANS: OpenID plugin server error.
@@ -305,7 +321,7 @@ function oid_assert_allowed($url)
}
}
// TRANS: OpenID plugin client exception (403).
- throw new ClientException(_m("Unauthorized URL used for OpenID login."), 403);
+ throw new ClientException(_m('Unauthorized URL used for OpenID login.'), 403);
}
}
@@ -344,9 +360,9 @@ class AutosubmitAction extends Action
var $form_html = null;
var $form_id = null;
- function handle($args)
+ function handle()
{
- parent::handle($args);
+ parent::handle();
$this->showPage();
}
@@ -359,7 +375,7 @@ class AutosubmitAction extends Action
function showContent()
{
$this->raw('
');
- // @fixme this would be better using standard CSS class, but the present theme's a bit scary.
+ // @todo FIXME: This would be better using standard CSS class, but the present theme's a bit scary.
$this->element('img', array('src' => Theme::path('images/icons/icon_processing.gif', 'base'),
// for some reason the base CSS sets
s as block display?!
'style' => 'display: inline'));