mirror of
https://github.com/e107inc/e107.git
synced 2025-07-31 03:40:37 +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 (
|
||||
// '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_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_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', ),
|
||||
|
@@ -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 string $event_code [optional] - eg. 'BOUNCE'
|
||||
* @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
|
||||
*
|
||||
* 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 == '')
|
||||
{
|
||||
@@ -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;
|
||||
}
|
||||
@@ -231,12 +232,13 @@ class e_admin_log
|
||||
* LOG_TO_ADMIN - admin log
|
||||
* LOG_TO_AUDIT - audit log
|
||||
* LOG_TO_ROLLING - rolling log
|
||||
*
|
||||
* @param array $userData - attribute user to log entry. array('user_id'=>2, 'user_name'=>'whatever');
|
||||
* @return none
|
||||
|
||||
* @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();
|
||||
$pref = e107::getPref();
|
||||
@@ -256,10 +258,26 @@ class e_admin_log
|
||||
//---------------------------------------
|
||||
// Calculations common to all logs
|
||||
//---------------------------------------
|
||||
|
||||
$userid = deftrue('USER') ? USERID : 0;
|
||||
$userstring = deftrue('USER') ? USERNAME : 'LAN_ANONYMOUS';
|
||||
$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');
|
||||
$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)
|
||||
{
|
||||
# system/xup/endpoint by default
|
||||
@@ -956,6 +962,7 @@ class e_user_provider
|
||||
|
||||
public function getProvider()
|
||||
{
|
||||
// $this->log(__CLASS__, __METHOD__, __LINE__);
|
||||
return $this->_provider;
|
||||
}
|
||||
|
||||
@@ -975,6 +982,7 @@ class e_user_provider
|
||||
|
||||
public function userId()
|
||||
{
|
||||
|
||||
if($this->adapter && $this->adapter->getUserProfile()->identifier)
|
||||
{
|
||||
return $this->getProvider().'_'.$this->adapter->getUserProfile()->identifier;
|
||||
@@ -1009,7 +1017,8 @@ class e_user_provider
|
||||
$redirectUrl = e107::getUrl()->create($redirectUrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(e107::getUser()->isUser())
|
||||
{
|
||||
if($redirectUrl)
|
||||
@@ -1022,14 +1031,17 @@ class e_user_provider
|
||||
|
||||
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
||||
$profile = $this->adapter->getUserProfile();
|
||||
|
||||
|
||||
$this->log(__CLASS__, __METHOD__, __LINE__);
|
||||
// returned back, if success...
|
||||
if($profile->identifier)
|
||||
{
|
||||
|
||||
$sql = e107::getDb();
|
||||
$userMethods = e107::getUserSession();
|
||||
|
||||
$plainPwd = $userMethods->generateRandomString('************'); // auto plain passwords
|
||||
|
||||
|
||||
// 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', '_..#..#..#'));
|
||||
@@ -1064,11 +1076,14 @@ class e_user_provider
|
||||
|
||||
// user_name, user_xup, user_email and user_loginname shouldn't match
|
||||
$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
|
||||
e107::getUser()->loginProvider($this->userId());
|
||||
|
||||
if($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.
|
||||
{
|
||||
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
|
||||
@@ -1108,9 +1124,11 @@ class e_user_provider
|
||||
// user model error
|
||||
if($user->hasError())
|
||||
{
|
||||
e107::getLog()->add('XUP Signup Failure', $userdata, E_LOG_WARNING, "XUP_SIGNUP");
|
||||
throw new Exception($user->renderMessages(), 5);
|
||||
}
|
||||
|
||||
|
||||
### Successful signup!
|
||||
//$user->set('provider', $this->getProvider());
|
||||
$userdata = $user->getData();
|
||||
@@ -1125,7 +1143,7 @@ class e_user_provider
|
||||
if(true === $ret) return $this;
|
||||
|
||||
// send email
|
||||
if($emailAfterSuccess)
|
||||
if($emailAfterSuccess && !empty($userdata['user_email']))
|
||||
{
|
||||
$user->set('user_password', $plainPwd)->email('signup');
|
||||
}
|
||||
@@ -1146,6 +1164,8 @@ class e_user_provider
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->log(__CLASS__, __METHOD__, __LINE__);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1153,6 +1173,7 @@ class e_user_provider
|
||||
|
||||
public function login($redirectUrl = true)
|
||||
{
|
||||
|
||||
if(!e107::getPref('social_login_active', false))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(e107::getUser()->isUser())
|
||||
{
|
||||
if($redirectUrl)
|
||||
@@ -1186,7 +1208,8 @@ class e_user_provider
|
||||
|
||||
$this->adapter = $this->hybridauth->authenticate($this->getProvider());
|
||||
$check = e107::getUser()->setProvider($this)->loginProvider($this->userId(), false);
|
||||
|
||||
|
||||
|
||||
if($redirectUrl)
|
||||
{
|
||||
e107::getRedirect()->redirect($redirectUrl);
|
||||
|
@@ -1557,7 +1557,9 @@ class e_user extends e_user_model
|
||||
$userlogin = new userlogin();
|
||||
$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);
|
||||
|
||||
@@ -1681,21 +1683,45 @@ class e_user extends e_user_model
|
||||
// query DB
|
||||
$sql = e107::getDb();
|
||||
$where = array();
|
||||
$userdata = array();
|
||||
|
||||
foreach ($connected as $providerId)
|
||||
{
|
||||
$adapter = Hybrid_Auth::getAdapter($providerId);
|
||||
|
||||
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 = 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);
|
||||
$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;
|
||||
|
Reference in New Issue
Block a user