Version 3.4.5

This commit is contained in:
Neo committed 2025-12-19 00:38:12 -08:00
1 parent fb6b5baabc
commit e4478369d8
1360 files changed
+228921 -179445

No files matched your search

+105 -39
View File
@@ -2,9 +2,9 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.4
* IP.Board v3.4.5
* Login handler abstraction
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* Last Updated: $Date: 2013-05-03 23:09:37 -0400 (Fri, 03 May 2013) $
* </pre>
*
* @author $Author: bfarber $
@@ -13,7 +13,7 @@
* @package IP.Board
* @link http://www.invisionpower.com
* @since Tuesday 1st March 2005 (11:52)
* @version $Revision: 10914 $
* @version $Revision: 12226 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -125,7 +125,7 @@ class han_login
// Load member
//-----------------------------------------
$member = IPSMember::load( $memberID, 'all' );
$member = IPSMember::load( $memberID, 'all,members_partial' );
if ( ! $member['member_id'] )
{
@@ -137,20 +137,28 @@ class han_login
// Not completed their sign in?
//-----------------------------------------
if ( $member['members_created_remote'] AND isset($member['full']) AND !$member['full'] )
if ( $member['members_created_remote'] )
{
//-----------------------------------------
// If this is a resume, i.e. from Facebook,
// timenow won't be set
//-----------------------------------------
if( !$member['timenow'] )
if ( isset($member['full']) AND !$member['full'] )
{
$partial = $this->DB->buildAndFetch( array( 'select' => 'partial_date', 'from' => 'members_partial', 'where' => 'partial_member_id=' . $member['member_id'] ) );
$member['timenow'] = $partial['partial_date'];
}
return array( $this->registry->getClass('class_localization')->words['partial_login'], $this->settings['base_url'] . 'app=core&amp;module=global&amp;section=register&amp;do=complete_login&amp;mid='.$member['member_id'].'&amp;key='.$member['timenow'] );
//-----------------------------------------
// If this is a resume, i.e. from Facebook,
// timenow won't be set
//-----------------------------------------
if( !$member['timenow'] )
{
$partial = $this->DB->buildAndFetch( array( 'select' => 'partial_date', 'from' => 'members_partial', 'where' => 'partial_member_id=' . $member['member_id'] ) );
$member['timenow'] = $partial['partial_date'];
}
return array( $this->registry->getClass('class_localization')->words['partial_login'], $this->settings['base_url'] . 'app=core&amp;module=global&amp;section=register&amp;do=complete_login&amp;mid='.$member['member_id'].'&amp;key='.$member['timenow'] );
}
elseif ( $member['partial_member_id'] )
{
$this->DB->delete( 'members_partial', "partial_member_id={$member['partial_member_id']}" );
}
}
//-----------------------------------------
@@ -173,16 +181,18 @@ class han_login
//-----------------------------------------
// Cookie me softly?
//-----------------------------------------
if ( $setCookies )
{
IPSCookie::set( "member_id" , $member['member_id'] , 1 );
IPSCookie::set( "pass_hash" , $member['member_login_key'], $_sticky, $_days );
IPSCookie::set( "member_id" , $member['member_id'] , 1, 0, FALSE, TRUE );
IPSCookie::set( "pass_hash" , $member['member_login_key'], $_sticky, $_days, FALSE, TRUE );
IPSCookie::set( "ipsconnect_" . md5( $this->settings['board_url'] . '/interface/ipsconnect/ipsconnect.php' ), '1', $_sticky, $_days, FALSE, FALSE );
}
else
{
IPSCookie::set( "member_id" , $member['member_id'], 0 );
IPSCookie::set( "pass_hash" , $member['member_login_key'], 0 );
IPSCookie::set( "member_id" , $member['member_id'], 0, 0, FALSE, TRUE );
IPSCookie::set( "pass_hash" , $member['member_login_key'], 0, 0, FALSE, TRUE );
IPSCookie::set( "ipsconnect_" . md5( $this->settings['board_url'] . '/interface/ipsconnect/ipsconnect.php' ), '1', 0, 0, FALSE, FALSE );
}
//-----------------------------------------
@@ -209,8 +219,7 @@ class han_login
$session_id = $this->registry->member()->sessionClass()->convertGuestToMember( array( 'member_name' => $member['members_display_name'],
'member_id' => $member['member_id'],
'member_group' => $member['member_group_id'],
'login_type' => $privacy
) );
'login_type' => $privacy ) );
if ( !empty( $this->request['referer'] ) AND $this->request['section'] != 'register' )
{
@@ -276,7 +285,8 @@ class han_login
// Still here?
//-----------------------------------------
return array( $this->registry->getClass('class_localization')->words['partial_login'], str_replace( '?&', '?', $url . '&s=' . $session_id ) );
//return array( $this->registry->getClass('class_localization')->words['partial_login'], str_replace( '?&', '?', $url . '&s=' . $session_id ) );
return array( $this->registry->getClass('class_localization')->words['partial_login'], str_replace( '?&', '?', $url ) );
}
/**
@@ -294,15 +304,16 @@ class han_login
$errors = '';
$core = array();
$mobileSSO = false;
$memberData = $this->registry->member()->fetchMemberData();
/* Mobile app + sso */
if ( $this->memberData['userAgentType'] == 'mobileApp' )
if ( $memberData['userAgentType'] == 'mobileApp' )
{
$file = IPS_ROOT_PATH . 'sources/classes/session/ssoMobileAppLogIn.php';
if ( is_file( $file ) )
{
require_once( $file );/*noLibHook*/ #NoTeraThisDoesNotNeedAHookButIForgotYourLittleCodeSorryX
require_once( $file );
if ( class_exists( 'ssoMobileAppLogIn' ) )
{
@@ -345,7 +356,7 @@ class han_login
//-----------------------------------------
// Check return code...
//-----------------------------------------
if ( $this->return_code != 'SUCCESS' )
{
if( $this->return_code == 'MISSING_DATA' )
@@ -376,6 +387,17 @@ class han_login
{
return array( null, null, 'flagged_remote' );
}
else if( $this->return_code == 'VALIDATING' )
{
if( $this->revalidate_url == 'ADMIN_VALIDATION' )
{
return array( null, null, 'validating_remote', ipsRegistry::getClass('class_localization')->words['admin_validation_msg'] );
}
else
{
return array( null, null, 'validating_remote', "<a href='{$this->revalidate_url}' target='_blank'>".ipsRegistry::getClass('class_localization')->words['resend_val']."</a>" );
}
}
else
{
return array( null, null, 'wrong_auth' );
@@ -412,18 +434,22 @@ class han_login
//-----------------------------------------
// Cookie me softly?
//-----------------------------------------
if ( $this->request['rememberMe'] )
{
IPSCookie::set( "member_id" , $member['member_id'] , 1 );
IPSCookie::set( "pass_hash" , $member['member_login_key'], $_sticky, $_days );
IPSCookie::set( "member_id" , $member['member_id'] , 1, 0, FALSE, TRUE );
IPSCookie::set( "pass_hash" , $member['member_login_key'], $_sticky, $_days, FALSE, TRUE );
IPSCookie::set( "ipsconnect_" . md5( $this->settings['board_url'] . '/interface/ipsconnect/ipsconnect.php' ), '1', $_sticky, $_days, FALSE, FALSE );
}
else
{
IPSCookie::set( "member_id" , $member['member_id'], 0 );
IPSCookie::set( "pass_hash" , $member['member_login_key'], 0 );
// Ticket 824266
// IPSCookie::set( "member_id" , $member['member_id'], 0 );
// IPSCookie::set( "pass_hash" , $member['member_login_key'], 0 );
IPSCookie::set( "ipsconnect_" . md5( $this->settings['board_url'] . '/interface/ipsconnect/ipsconnect.php' ), '1', 0, 0, FALSE, FALSE );
}
//-----------------------------------------
// Remove any COPPA cookies previously set
//-----------------------------------------
@@ -448,8 +474,7 @@ class han_login
$session_id = $this->registry->member()->sessionClass()->convertGuestToMember( array( 'member_name' => $member['members_display_name'],
'member_id' => $member['member_id'],
'member_group' => $member['member_group_id'],
'login_type' => $privacy
) );
'login_type' => $privacy ) );
if ( !empty($this->request['referer']) AND $this->request['section'] != 'register' )
{
@@ -656,6 +681,7 @@ class han_login
{
foreach( $this->modules as $k => $obj_reference )
{
$obj_reference->is_password_check = TRUE;
$obj_reference->authenticate( $username, $email_address, $password );
$this->return_code = ( $obj_reference->return_code == 'SUCCESS' ? 'SUCCESS' : 'FAIL' );
$this->member_data = $obj_reference->member_data;
@@ -685,6 +711,7 @@ class han_login
$this->return_code = $obj_reference->return_code;
$this->member_data = $obj_reference->member_data;
$this->account_unlock = ( $obj_reference->account_unlock ) ? $obj_reference->account_unlock : $this->account_unlock;
$this->revalidate_url = ( $obj_reference->revalidate_url ) ? $obj_reference->revalidate_url : $this->revalidate_url;
/* Locked */
if( $this->return_code == 'ACCOUNT_LOCKED' )
@@ -725,9 +752,10 @@ class han_login
/**
* Logout callback - called when a user logs out
*
* @param array Member Data
* @return mixed Possible redirection based on login method config, else array of messages
*/
public function logoutCallback()
public function logoutCallback( $memberData )
{
$returns = array();
$redirect = '';
@@ -736,7 +764,7 @@ class han_login
{
if( method_exists( $obj_reference, 'logoutCallback' ) )
{
$returns[] = $obj_reference->logoutCallback();
$returns[] = $obj_reference->logoutCallback( $memberData );
}
//-----------------------------------------
@@ -964,15 +992,15 @@ class han_login
* @param array Arra of Member Data
* @return boolean Request was successful
*/
public function changeName( $old_name, $new_name, $email_address, $memberData )
public function changeName( $old_name, $new_name, $email_address, $memberData, $type='name' )
{
$this->return_code = 'METHOD_NOT_DEFINED';
foreach( $this->modules as $k => $obj_reference )
{
if( method_exists( $obj_reference, 'changeName' ) )
{
$obj_reference->changeName( $old_name, $new_name, $email_address, $memberData );
$obj_reference->changeName( $old_name, $new_name, $email_address, $memberData, $type );
$this->return_code = $obj_reference->return_code;
}
}
@@ -980,6 +1008,44 @@ class han_login
return ( $this->return_code == 'SUCCESS' ) ? true : false;
}
/**
* Validate Account
*
* @param array Member data
*/
public function validateAccount( $member )
{
$this->return_code = 'METHOD_NOT_DEFINED';
foreach( $this->modules as $k => $obj_reference )
{
if( method_exists( $obj_reference, 'validateAccount' ) )
{
$obj_reference->validateAccount( $member );
$this->return_code = $obj_reference->return_code;
}
}
}
/**
* Delete Account
*
* @param int|array ID(s)
*/
public function deleteAccount( $ids )
{
$this->return_code = 'METHOD_NOT_DEFINED';
foreach( $this->modules as $k => $obj_reference )
{
if( method_exists( $obj_reference, 'deleteAccount' ) )
{
$obj_reference->deleteAccount( $ids );
$this->return_code = $obj_reference->return_code;
}
}
}
/**
* Create a user's account
*