Version 5.0.0 beta 9

This commit is contained in:
Neo committed 2025-12-19 17:47:00 -08:00
1 parent 214f649f1d
commit 56979f8ee8
202 files changed
+4403 -1123

No files matched your search

@@ -23,7 +23,6 @@ use IPS\DateTime;
use IPS\Db;
use IPS\Dispatcher\Controller;
use IPS\Email;
use IPS\Events\Event;
use IPS\Extensions\SSOAbstract;
use IPS\File;
use IPS\GeoLocation;
@@ -432,44 +431,9 @@ class settings extends Controller
if ( !count( $login->buttonMethods() ) or $success = $login->authenticate() )
{
/* Disable syncing */
$profileSync = Member::loggedIn()->profilesync;
if ( isset( $profileSync['email'] ) )
{
unset( $profileSync['email'] );
Member::loggedIn()->profilesync = $profileSync;
Member::loggedIn()->save();
}
/* Change the email */
$oldEmail = Member::loggedIn()->email;
Member::loggedIn()->email = $_SESSION['newEmail'];
Member::loggedIn()->save();
foreach ( Login::methods() as $method )
{
try
{
$method->changeEmail( Member::loggedIn(), $oldEmail, $_SESSION['newEmail'] );
}
catch( BadMethodCallException $e )
{
}
}
Member::loggedIn()->logHistory( 'core', 'email_change', array( 'old' => $oldEmail, 'new' => Member::loggedIn()->email, 'by' => 'manual' ) );
/* Invalidate sessions except this one */
Member::loggedIn()->invalidateSessionsAndLogins( Session::i()->id );
if( isset( Request::i()->cookie['login_key'] ) )
{
Device::loadOrCreate( Member::loggedIn() )->updateAfterAuthentication( TRUE );
}
/* Send a validation email if we need to */
if ( SettingsClass::i()->reg_auth_type == 'user' or SettingsClass::i()->reg_auth_type == 'admin_user' )
{
unset( $_SESSION['newEmail'] );
$vid = Login::generateRandomString();
$plainSecurityKey = Login::generateRandomString();
@@ -479,7 +443,7 @@ class settings extends Controller
'entry_date' => time(),
'email_chg' => TRUE,
'ip_address' => Request::i()->ipAddress(),
'prev_email' => $oldEmail,
'new_email' => $_SESSION['newEmail'],
'email_sent' => time(),
'security_key' => Encrypt::fromPlaintext( $plainSecurityKey )->tag()
) );
@@ -487,15 +451,26 @@ class settings extends Controller
Member::loggedIn()->members_bitoptions['validating'] = TRUE;
Member::loggedIn()->save();
Email::buildFromTemplate( 'core', 'email_change', array( Member::loggedIn(), $vid, $plainSecurityKey ), Email::TYPE_TRANSACTIONAL )->send( Member::loggedIn() );
Email::buildFromTemplate( 'core', 'email_change', array( Member::loggedIn(), $vid, $plainSecurityKey, $_SESSION['newEmail'] ), Email::TYPE_TRANSACTIONAL )->send( $_SESSION['newEmail'], array(), array(), NULL, NULL, array( 'Reply-To' => SettingsClass::i()->email_in ) );
unset( $_SESSION['newEmail'] );
Output::i()->redirect( Url::internal( '' ) );
}
/* Or just redirect */
/* If we don't need validation, just change it */
else
{
Event::fire( 'onEmailChange', Member::loggedIn(), array( $_SESSION['newEmail'], $oldEmail ) );
$oldEmail = Member::loggedIn()->email;
Member::loggedIn()->changeEmail( $_SESSION['newEmail'] );
/* Invalidate sessions except this one */
Member::loggedIn()->invalidateSessionsAndLogins( Session::i()->id );
if( isset( Request::i()->cookie['login_key'] ) )
{
Device::loadOrCreate( Member::loggedIn() )->updateAfterAuthentication( TRUE );
}
unset( $_SESSION['newEmail'] );
/* Send a confirmation email */
@@ -505,7 +480,7 @@ class settings extends Controller
}
}
}
catch ( LoginException|\Exception $e )
catch ( LoginException|Exception $e )
{
$error = $e->getMessage();
}