From 68868fd74bbc6a6f2268b6c5467ccf9e025af011 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 23 Dec 2010 21:52:51 +0100 Subject: [PATCH] OpenID delegation degrade gracefully if database table is not updated. --- mod/profile.php | 30 +++++++++++++++--------------- mod/settings.php | 7 ++++++- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/mod/profile.php b/mod/profile.php index 000e955eae..a5f440f434 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -20,24 +20,24 @@ function profile_init(&$a) { if (!get_config('system','no_openid') && $a->profile['openid']!=""){ if (!isset($a->profile['openidserver'])){ - die('friendika user table must be updated. `openidserver` field is missing'); - } - if ($a->profile['openidserver']==''){ - require_once('library/openid.php'); - $openid = new LightOpenID; - $openid->identity = $a->profile['openid']; - $a->profile['openidserver'] = $openid->discover($openid->identity); + logger('friendika user table must be updated. `openidserver` field is missing'); + } else { + if ($a->profile['openidserver']==''){ + require_once('library/openid.php'); + $openid = new LightOpenID; + $openid->identity = $a->profile['openid']; + $a->profile['openidserver'] = $openid->discover($openid->identity); - q("UPDATE `user` SET `openidserver` = '%s' WHERE `uid` = %d LIMIT 1", - dbesc($a->profile['openidserver']), - intval($a->profile['uid']) - ); - } + q("UPDATE `user` SET `openidserver` = '%s' WHERE `uid` = %d LIMIT 1", + dbesc($a->profile['openidserver']), + intval($a->profile['uid']) + ); + } - $a->page['htmlhead'] .= ''. "\r\n"; - $a->page['htmlhead'] .= ''. "\r\n"; - + $a->page['htmlhead'] .= ''. "\r\n"; + $a->page['htmlhead'] .= ''. "\r\n"; + } } diff --git a/mod/settings.php b/mod/settings.php index 4743ecd661..af826c53b7 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -109,7 +109,12 @@ function settings_post(&$a) { $str_group_deny = perms2str($_POST['group_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($email), dbesc($openid),