mirror of
https://github.com/e107inc/e107.git
synced 2025-08-03 13:17:24 +02:00
XUP: Issue #1378 - Update Username and Avatar if they have changed.
This commit is contained in:
@@ -152,7 +152,7 @@ class admin_log_ui extends e_admin_ui
|
|||||||
protected $fields = array (
|
protected $fields = array (
|
||||||
// 'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'nolist'=>true, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
|
// 'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'nolist'=>true, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
|
||||||
'dblog_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
'dblog_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
||||||
'dblog_datestamp' => array ( 'title' => LAN_DATESTAMP, 'type' => 'datestamp', 'data' => 'int', 'width' => '12%', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
'dblog_datestamp' => array ( 'title' => LAN_DATESTAMP, 'type' => 'datestamp', 'data' => 'int', 'width' => '12%', 'filter' => true, 'help' => '', 'readParms' => array('mask'=>'dd MM yyyy hh:ii:ss'), 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
||||||
// 'dblog_microtime' => array ( 'title' => 'Microtime', 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
|
// 'dblog_microtime' => array ( 'title' => 'Microtime', 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
|
||||||
'dblog_type' => array ( 'title' => RL_LAN_032, 'type' => 'method', 'data' => 'int', 'width' => '5%', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
|
'dblog_type' => array ( 'title' => RL_LAN_032, 'type' => 'method', 'data' => 'int', 'width' => '5%', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
|
||||||
'dblog_ip' => array ( 'title' => LAN_IP, 'type' => 'ip', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
'dblog_ip' => array ( 'title' => LAN_IP, 'type' => 'ip', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
|
||||||
|
@@ -143,6 +143,7 @@ class e_admin_log
|
|||||||
* @param integer $event_type [optional] Log level eg. E_LOG_INFORMATIVE, E_LOG_NOTICE, E_LOG_WARNING, E_LOG_FATAL
|
* @param integer $event_type [optional] Log level eg. E_LOG_INFORMATIVE, E_LOG_NOTICE, E_LOG_WARNING, E_LOG_FATAL
|
||||||
* @param string $event_code [optional] - eg. 'BOUNCE'
|
* @param string $event_code [optional] - eg. 'BOUNCE'
|
||||||
* @param integer $target [optional] LOG_TO_ADMIN, LOG_TO_AUDIT, LOG_TO_ROLLING
|
* @param integer $target [optional] LOG_TO_ADMIN, LOG_TO_AUDIT, LOG_TO_ROLLING
|
||||||
|
* @param array $user - user to attribute the log to. array('user_id'=>2, 'user_name'=>'whoever');
|
||||||
* @return e_admin_log
|
* @return e_admin_log
|
||||||
*
|
*
|
||||||
* Alternative admin log entry point - compatible with legacy calls, and a bit simpler to use than the generic entry point.
|
* Alternative admin log entry point - compatible with legacy calls, and a bit simpler to use than the generic entry point.
|
||||||
@@ -157,7 +158,7 @@ class e_admin_log
|
|||||||
*
|
*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
public function add($event_title, $event_detail, $event_type = E_LOG_INFORMATIVE , $event_code = '', $target = LOG_TO_ADMIN )
|
public function add($event_title, $event_detail, $event_type = E_LOG_INFORMATIVE , $event_code = '', $target = LOG_TO_ADMIN, $userData=null )
|
||||||
{
|
{
|
||||||
if ($event_code == '')
|
if ($event_code == '')
|
||||||
{
|
{
|
||||||
@@ -203,7 +204,7 @@ class e_admin_log
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->e_log_event($event_type, -1, $event_code, $event_title, $event_detail, FALSE, $target);
|
$this->e_log_event($event_type, -1, $event_code, $event_title, $event_detail, FALSE, $target, $userData);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -231,12 +232,13 @@ class e_admin_log
|
|||||||
* LOG_TO_ADMIN - admin log
|
* LOG_TO_ADMIN - admin log
|
||||||
* LOG_TO_AUDIT - audit log
|
* LOG_TO_AUDIT - audit log
|
||||||
* LOG_TO_ROLLING - rolling log
|
* LOG_TO_ROLLING - rolling log
|
||||||
*
|
* @param array $userData - attribute user to log entry. array('user_id'=>2, 'user_name'=>'whatever');
|
||||||
* @return none
|
* @return none
|
||||||
|
|
||||||
* @todo - check microtime() call
|
* @todo - check microtime() call
|
||||||
|
* @deprecated - use add() method instead.
|
||||||
*/
|
*/
|
||||||
public function e_log_event($importance, $source_call, $eventcode = "GEN", $event_title = "Untitled", $explain = "", $finished = FALSE, $target_logs = LOG_TO_AUDIT )
|
public function e_log_event($importance, $source_call, $eventcode = "GEN", $event_title = "Untitled", $explain = "", $finished = FALSE, $target_logs = LOG_TO_AUDIT, $userData=null )
|
||||||
{
|
{
|
||||||
$e107 = e107::getInstance();
|
$e107 = e107::getInstance();
|
||||||
$pref = e107::getPref();
|
$pref = e107::getPref();
|
||||||
@@ -256,10 +258,26 @@ class e_admin_log
|
|||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
// Calculations common to all logs
|
// Calculations common to all logs
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
|
|
||||||
$userid = deftrue('USER') ? USERID : 0;
|
$userid = deftrue('USER') ? USERID : 0;
|
||||||
$userstring = deftrue('USER') ? USERNAME : 'LAN_ANONYMOUS';
|
$userstring = deftrue('USER') ? USERNAME : 'LAN_ANONYMOUS';
|
||||||
$userIP = e107::getIPHandler()->getIP(FALSE);
|
$userIP = e107::getIPHandler()->getIP(FALSE);
|
||||||
|
|
||||||
|
if(!empty($userData['user_id']))
|
||||||
|
{
|
||||||
|
$userid = $userData['user_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($userData['user_name']))
|
||||||
|
{
|
||||||
|
$userstring = $userData['user_name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($userData['user_ip']))
|
||||||
|
{
|
||||||
|
$userIP = $userData['user_ip'];
|
||||||
|
}
|
||||||
|
|
||||||
$importance = $tp->toDB($importance, true, false, 'no_html');
|
$importance = $tp->toDB($importance, true, false, 'no_html');
|
||||||
$eventcode = $tp->toDB($eventcode, true, false, 'no_html');
|
$eventcode = $tp->toDB($eventcode, true, false, 'no_html');
|
||||||
|
|
||||||
|
@@ -947,7 +947,13 @@ class e_user_provider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function log($class,$method,$line)
|
||||||
|
{
|
||||||
|
// e107::getLog()->add('XUP Debug', ($class.':'.$method.'-'.$line), E_LOG_INFORMATIVE, "XUP_DEBUG");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function setBackUrl($url)
|
public function setBackUrl($url)
|
||||||
{
|
{
|
||||||
# system/xup/endpoint by default
|
# system/xup/endpoint by default
|
||||||
@@ -956,6 +962,7 @@ class e_user_provider
|
|||||||
|
|
||||||
public function getProvider()
|
public function getProvider()
|
||||||
{
|
{
|
||||||
|
// $this->log(__CLASS__, __METHOD__, __LINE__);
|
||||||
return $this->_provider;
|
return $this->_provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -975,6 +982,7 @@ class e_user_provider
|
|||||||
|
|
||||||
public function userId()
|
public function userId()
|
||||||
{
|
{
|
||||||
|
|
||||||
if($this->adapter && $this->adapter->getUserProfile()->identifier)
|
if($this->adapter && $this->adapter->getUserProfile()->identifier)
|
||||||
{
|
{
|
||||||
return $this->getProvider().'_'.$this->adapter->getUserProfile()->identifier;
|
return $this->getProvider().'_'.$this->adapter->getUserProfile()->identifier;
|
||||||
@@ -1009,7 +1017,8 @@ class e_user_provider
|
|||||||
$redirectUrl = e107::getUrl()->create($redirectUrl);
|
$redirectUrl = e107::getUrl()->create($redirectUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(e107::getUser()->isUser())
|
if(e107::getUser()->isUser())
|
||||||
{
|
{
|
||||||
if($redirectUrl)
|
if($redirectUrl)
|
||||||
@@ -1022,14 +1031,17 @@ class e_user_provider
|
|||||||
|
|
||||||
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
||||||
$profile = $this->adapter->getUserProfile();
|
$profile = $this->adapter->getUserProfile();
|
||||||
|
|
||||||
|
$this->log(__CLASS__, __METHOD__, __LINE__);
|
||||||
// returned back, if success...
|
// returned back, if success...
|
||||||
if($profile->identifier)
|
if($profile->identifier)
|
||||||
{
|
{
|
||||||
|
|
||||||
$sql = e107::getDb();
|
$sql = e107::getDb();
|
||||||
$userMethods = e107::getUserSession();
|
$userMethods = e107::getUserSession();
|
||||||
|
|
||||||
$plainPwd = $userMethods->generateRandomString('************'); // auto plain passwords
|
$plainPwd = $userMethods->generateRandomString('************'); // auto plain passwords
|
||||||
|
|
||||||
|
|
||||||
// TODO - auto login name, shouldn't be used if system set to user_email login...
|
// TODO - auto login name, shouldn't be used if system set to user_email login...
|
||||||
$userdata['user_loginname'] = $this->getProvider().$userMethods->generateUserLogin(e107::getPref('predefinedLoginName', '_..#..#..#'));
|
$userdata['user_loginname'] = $this->getProvider().$userMethods->generateUserLogin(e107::getPref('predefinedLoginName', '_..#..#..#'));
|
||||||
@@ -1064,11 +1076,14 @@ class e_user_provider
|
|||||||
|
|
||||||
// user_name, user_xup, user_email and user_loginname shouldn't match
|
// user_name, user_xup, user_email and user_loginname shouldn't match
|
||||||
$insert = (!empty($userdata['user_email'])) ? "OR user_email='".$userdata['user_email']."' " : "";
|
$insert = (!empty($userdata['user_email'])) ? "OR user_email='".$userdata['user_email']."' " : "";
|
||||||
|
|
||||||
|
$this->log(__CLASS__, __METHOD__, __LINE__);
|
||||||
|
|
||||||
if($sql->count("user", "(*)", "user_xup='".$sql->escape($this->userId())."' ".$insert." OR user_loginname='{$userdata['user_loginname']}' OR user_name='{$userdata['user_name']}'"))
|
if($uid = $sql->retrieve("user", "user_id", "user_xup='".$sql->escape($this->userId())."' ".$insert." OR user_loginname='{$userdata['user_loginname']}' OR user_name='{$userdata['user_name']}'"))
|
||||||
{
|
{
|
||||||
// $this->login($redirectUrl); // auto-login
|
// $this->login($redirectUrl); // auto-login
|
||||||
e107::getUser()->loginProvider($this->userId());
|
e107::getUser()->loginProvider($this->userId());
|
||||||
|
|
||||||
if($redirectUrl)
|
if($redirectUrl)
|
||||||
{
|
{
|
||||||
e107::getRedirect()->redirect($redirectUrl);
|
e107::getRedirect()->redirect($redirectUrl);
|
||||||
@@ -1080,7 +1095,8 @@ class e_user_provider
|
|||||||
|
|
||||||
if(empty($userdata['user_email']) && e107::getPref('disable_emailcheck', 0)==0) // Allow it if set-up that way.
|
if(empty($userdata['user_email']) && e107::getPref('disable_emailcheck', 0)==0) // Allow it if set-up that way.
|
||||||
{
|
{
|
||||||
throw new Exception( "Signup failed! Can't access user email - registration without an email is impossible.".print_a($userdata,true), 4); // TODO lan
|
// Twitter will not provide email addresses.
|
||||||
|
// throw new Exception( "Signup failed! Can't access user email - registration without an email is impossible.".print_a($userdata,true), 4); // TODO lan
|
||||||
}
|
}
|
||||||
|
|
||||||
// other fields
|
// other fields
|
||||||
@@ -1108,9 +1124,11 @@ class e_user_provider
|
|||||||
// user model error
|
// user model error
|
||||||
if($user->hasError())
|
if($user->hasError())
|
||||||
{
|
{
|
||||||
|
e107::getLog()->add('XUP Signup Failure', $userdata, E_LOG_WARNING, "XUP_SIGNUP");
|
||||||
throw new Exception($user->renderMessages(), 5);
|
throw new Exception($user->renderMessages(), 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Successful signup!
|
### Successful signup!
|
||||||
//$user->set('provider', $this->getProvider());
|
//$user->set('provider', $this->getProvider());
|
||||||
$userdata = $user->getData();
|
$userdata = $user->getData();
|
||||||
@@ -1125,7 +1143,7 @@ class e_user_provider
|
|||||||
if(true === $ret) return $this;
|
if(true === $ret) return $this;
|
||||||
|
|
||||||
// send email
|
// send email
|
||||||
if($emailAfterSuccess)
|
if($emailAfterSuccess && !empty($userdata['user_email']))
|
||||||
{
|
{
|
||||||
$user->set('user_password', $plainPwd)->email('signup');
|
$user->set('user_password', $plainPwd)->email('signup');
|
||||||
}
|
}
|
||||||
@@ -1146,6 +1164,8 @@ class e_user_provider
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->log(__CLASS__, __METHOD__, __LINE__);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1153,6 +1173,7 @@ class e_user_provider
|
|||||||
|
|
||||||
public function login($redirectUrl = true)
|
public function login($redirectUrl = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(!e107::getPref('social_login_active', false))
|
if(!e107::getPref('social_login_active', false))
|
||||||
{
|
{
|
||||||
throw new Exception( "Signup failed! This feature is disabled.", 100); // TODO lan
|
throw new Exception( "Signup failed! This feature is disabled.", 100); // TODO lan
|
||||||
@@ -1174,7 +1195,8 @@ class e_user_provider
|
|||||||
$redirectUrl = e107::getUrl()->create($redirectUrl);
|
$redirectUrl = e107::getUrl()->create($redirectUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(e107::getUser()->isUser())
|
if(e107::getUser()->isUser())
|
||||||
{
|
{
|
||||||
if($redirectUrl)
|
if($redirectUrl)
|
||||||
@@ -1186,7 +1208,8 @@ class e_user_provider
|
|||||||
|
|
||||||
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
||||||
$check = e107::getUser()->setProvider($this)->loginProvider($this->userId(), false);
|
$check = e107::getUser()->setProvider($this)->loginProvider($this->userId(), false);
|
||||||
|
|
||||||
|
|
||||||
if($redirectUrl)
|
if($redirectUrl)
|
||||||
{
|
{
|
||||||
e107::getRedirect()->redirect($redirectUrl);
|
e107::getRedirect()->redirect($redirectUrl);
|
||||||
|
@@ -1557,7 +1557,9 @@ class e_user extends e_user_model
|
|||||||
$userlogin = new userlogin();
|
$userlogin = new userlogin();
|
||||||
$userlogin->login($xup, '', 'provider', false, true);
|
$userlogin->login($xup, '', 'provider', false, true);
|
||||||
|
|
||||||
$userdata = $userlogin->getUserData();
|
$userdata = $userlogin->getUserData();
|
||||||
|
|
||||||
|
e107::getLog()->add('XUP Debug', (__CLASS__.':'.__METHOD__.'-'.__LINE__), E_LOG_INFORMATIVE, "XUP_DEBUG");
|
||||||
|
|
||||||
$this->setSessionData(true)->setData($userdata);
|
$this->setSessionData(true)->setData($userdata);
|
||||||
|
|
||||||
@@ -1681,21 +1683,45 @@ class e_user extends e_user_model
|
|||||||
// query DB
|
// query DB
|
||||||
$sql = e107::getDb();
|
$sql = e107::getDb();
|
||||||
$where = array();
|
$where = array();
|
||||||
|
$userdata = array();
|
||||||
|
|
||||||
foreach ($connected as $providerId)
|
foreach ($connected as $providerId)
|
||||||
{
|
{
|
||||||
$adapter = Hybrid_Auth::getAdapter($providerId);
|
$adapter = Hybrid_Auth::getAdapter($providerId);
|
||||||
|
|
||||||
if(!$adapter->getUserProfile()->identifier) continue;
|
if(!$adapter->getUserProfile()->identifier) continue;
|
||||||
|
|
||||||
$id = $providerId.'_'.$adapter->getUserProfile()->identifier;
|
$profile = $adapter->getUserProfile();
|
||||||
|
|
||||||
|
$userdata['user_name'] = $sql->escape($profile->displayName);
|
||||||
|
$userdata['user_image'] = $profile->photoURL; // avatar
|
||||||
|
|
||||||
|
$id = $providerId.'_'.$profile->identifier;
|
||||||
$where[] = "user_xup='".$sql->escape($id)."'";
|
$where[] = "user_xup='".$sql->escape($id)."'";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$where = implode(' OR ', $where);
|
$where = implode(' OR ', $where);
|
||||||
if($sql->db_Select('user', 'user_id, user_password, user_xup', $where))
|
if($sql->select('user', 'user_id, user_password, user_xup', $where))
|
||||||
{
|
{
|
||||||
$user = $sql->db_Fetch();
|
|
||||||
|
$user = $sql->fetch();
|
||||||
e107::getUserSession()->makeUserCookie($user);
|
e107::getUserSession()->makeUserCookie($user);
|
||||||
$this->setSessionData();
|
$this->setSessionData();
|
||||||
|
|
||||||
|
// Update display name or avatar image if they have changed.
|
||||||
|
if(($userdata['user_name'] != $user['user_name']) || ($userdata['user_image'] != $user['user_image']))
|
||||||
|
{
|
||||||
|
|
||||||
|
if($sql->update('user', "user_name='".$userdata['user_name']."', user_image='".$userdata['user_image']."' WHERE user_id=".$user['user_id']." LIMIT 1")!==false)
|
||||||
|
{
|
||||||
|
e107::getLog()->add('User Profile Updated', $userdata, E_LOG_INFORMATIVE, "XUP_LOGIN", LOG_TO_ADMIN, array('user_id'=>$user['user_id'],'user_name'=>$user['user_name']));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e107::getLog()->add('User Profile Update Failed', $userdata, E_LOG_WARNING, "XUP_LOGIN", LOG_TO_ADMIN, array('user_id'=>$user['user_id'],'user_name'=>$user['user_name']));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
Reference in New Issue
Block a user