OpenID delegation degrade gracefully if database table is not updated.

This commit is contained in:
fabrixxm 2010-12-23 21:52:51 +01:00
parent e47a816a8f
commit 68868fd74b
2 changed files with 21 additions and 16 deletions

View File

@ -20,24 +20,24 @@ function profile_init(&$a) {
if (!get_config('system','no_openid') && $a->profile['openid']!=""){ if (!get_config('system','no_openid') && $a->profile['openid']!=""){
if (!isset($a->profile['openidserver'])){ if (!isset($a->profile['openidserver'])){
die('friendika user table must be updated. `openidserver` field is missing'); logger('friendika user table must be updated. `openidserver` field is missing');
} } else {
if ($a->profile['openidserver']==''){ if ($a->profile['openidserver']==''){
require_once('library/openid.php'); require_once('library/openid.php');
$openid = new LightOpenID; $openid = new LightOpenID;
$openid->identity = $a->profile['openid']; $openid->identity = $a->profile['openid'];
$a->profile['openidserver'] = $openid->discover($openid->identity); $a->profile['openidserver'] = $openid->discover($openid->identity);
q("UPDATE `user` SET `openidserver` = '%s' WHERE `uid` = %d LIMIT 1", q("UPDATE `user` SET `openidserver` = '%s' WHERE `uid` = %d LIMIT 1",
dbesc($a->profile['openidserver']), dbesc($a->profile['openidserver']),
intval($a->profile['uid']) intval($a->profile['uid'])
); );
} }
$a->page['htmlhead'] .= '<link rel="openid.server" href="'.$a->profile['openidserver'].'" />'. "\r\n"; $a->page['htmlhead'] .= '<link rel="openid.server" href="'.$a->profile['openidserver'].'" />'. "\r\n";
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="'.$a->profile['openid'].'" />'. "\r\n"; $a->page['htmlhead'] .= '<link rel="openid.delegate" href="'.$a->profile['openid'].'" />'. "\r\n";
}
} }

View File

@ -109,7 +109,12 @@ function settings_post(&$a) {
$str_group_deny = perms2str($_POST['group_deny']); $str_group_deny = perms2str($_POST['group_deny']);
$str_contact_deny = perms2str($_POST['contact_deny']); $str_contact_deny = perms2str($_POST['contact_deny']);
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d WHERE `uid` = %d LIMIT 1", $openidserver="";
if ($openid != $a->user['openid'] && isset($a->user['openidserver'])){
$openidserver = ", `openidserver` = ''";
}
$r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d".$openidserver." WHERE `uid` = %d LIMIT 1",
dbesc($username), dbesc($username),
dbesc($email), dbesc($email),
dbesc($openid), dbesc($openid),