summaryrefslogtreecommitdiff
path: root/modules/openid
diff options
context:
space:
mode:
authorGábor Hojtsy <gabor@hojtsy.hu>2007-10-15 09:40:42 +0000
committerGábor Hojtsy <gabor@hojtsy.hu>2007-10-15 09:40:42 +0000
commit44d22fc8632ab51aa750e5307b1e3a506c8226ac (patch)
tree8bf71b5e5aa5df0a628ae530bf4e4a4509067bf6 /modules/openid
parent7d8c8d72f1b2f2942af8ea2bfa7c818d090aa3c7 (diff)
downloadbrdo-44d22fc8632ab51aa750e5307b1e3a506c8226ac.tar.gz
brdo-44d22fc8632ab51aa750e5307b1e3a506c8226ac.tar.bz2
#156886 by edgauthier: fix OpenID delegation
Diffstat (limited to 'modules/openid')
-rw-r--r--modules/openid/openid.module13
-rw-r--r--modules/openid/xrds.inc3
2 files changed, 15 insertions, 1 deletions
diff --git a/modules/openid/openid.module b/modules/openid/openid.module
index a0bc93324..d5727954a 100644
--- a/modules/openid/openid.module
+++ b/modules/openid/openid.module
@@ -157,7 +157,18 @@ function openid_begin($claimed_id, $return_to = '', $form_values = array()) {
// Now that there is an association created, move on
// to request authentication from the IdP
- $identity = (!empty($services[0]['delegate'])) ? $services[0]['delegate'] : $claimed_id;
+ // First check for LocalID. If not found, check for Delegate. Fall
+ // back to $claimed_id if neither is found.
+ if (!empty($services[0]['localid'])) {
+ $identity = $services[0]['localid'];
+ }
+ else if (!empty($services[0]['delegate'])) {
+ $identity = $services[0]['delegate'];
+ }
+ else {
+ $identity = $claimed_id;
+ }
+
if (isset($services[0]['types']) && is_array($services[0]['types']) && in_array(OPENID_NS_2_0 .'/server', $services[0]['types'])) {
$identity = 'http://openid.net/identifier_select/2.0';
}
diff --git a/modules/openid/xrds.inc b/modules/openid/xrds.inc
index 28fc979c4..955876881 100644
--- a/modules/openid/xrds.inc
+++ b/modules/openid/xrds.inc
@@ -65,6 +65,9 @@ function _xrds_cdata(&$parser, $data) {
case 'XRDS/XRD/SERVICE/DELEGATE':
$xrds_current_service['delegate'] = $data;
break;
+ case 'XRDS/XRD/SERVICE/LOCALID':
+ $xrds_current_service['localid'] = $data;
+ break;
}
}