Version 5.0.14

This commit is contained in:
Neo committed 2025-12-19 19:17:57 -08:00
1 parent 5efe744c5f
commit dbd774b30c
364 files changed
+7048 -1377

No files matched your search

+37 -32
View File
@@ -131,24 +131,29 @@ class Login
/**
* Get methods
*
* @return array<Handler>
* @return array<Handler>
*/
public static function methods(): array
{
$return = array();
foreach ( static::getStore() as $row )
$return = [];
$allowedHandlerClasses = Handler::handlerClasses();
foreach( static::getStore() as $row )
{
try
/* Does the class exist in the allowed handlers array, which contains all the handlers that are enabled? */
if( in_array( $row[ 'login_classname' ], $allowedHandlerClasses ) )
{
$return[ $row['login_id'] ] = Handler::constructFromData( $row );
/* Check login method is supported */
if( !$return[ $row['login_id'] ]->isSupported() )
try
{
$handler = Handler::constructFromData( $row );
if( $handler->isSupported() )
{
$return[ $row[ 'login_id' ] ] = $handler;
}
}
catch( OutOfRangeException $e )
{
unset( $return[ $row['login_id'] ] );
}
}
catch ( OutOfRangeException $e ) { }
}
return $return;
}
@@ -156,13 +161,13 @@ class Login
/**
* Login method Store
*
* @return array
* @return array
*/
public static function getStore(): array
{
if ( !isset( Store::i()->loginMethods ) )
{
Store::i()->loginMethods = iterator_to_array( Db::i()->select( '*', 'core_login_methods', array( 'login_enabled=1' ), 'login_order' )->setKeyField( 'login_id' ) );
Store::i()->loginMethods = iterator_to_array( Db::i()->select( '*', 'core_login_methods', ['login_enabled=1'], 'login_order' )->setKeyField( 'login_id' ) );
}
return Store::i()->loginMethods;
@@ -171,7 +176,7 @@ class Login
/**
* Get methods
*
* @return array
* @return array<int, Handler>
*/
protected function _methods(): array
{
@@ -195,11 +200,11 @@ class Login
/**
* Get methods which use a username and password
*
* @return array
* @return array<int, Handler>
*/
public function usernamePasswordMethods(): array
{
$return = array();
$return = [];
foreach ( $this->_methods() as $method )
{
if ( $method->type() === static::TYPE_USERNAME_PASSWORD )
@@ -213,7 +218,7 @@ class Login
/**
* Get methods which use a button
*
* @return array
* @return array<int, Handler>
*/
public function buttonMethods(): array
{
@@ -268,8 +273,8 @@ class Login
{
$leastOffensiveException = NULL;
$success = NULL;
$fails = array();
$failsNoAccount = array();
$fails = [];
$failsNoAccount = [];
foreach ( $this->usernamePasswordMethods() as $method )
{
@@ -450,8 +455,8 @@ class Login
if( $member->member_id )
{
Email::buildFromTemplate( 'core', 'account_locked', array( $member, $location, $unlockTime ?? NULL ), Email::TYPE_TRANSACTIONAL )->send( $member );
$member->logHistory( 'core', 'login', array( 'type' => 'lock', 'count' => $member->failedLoginCount( Request::i()->ipAddress() ), 'unlockTime' => $unlockTime?->getTimestamp() ) );
Email::buildFromTemplate( 'core', 'account_locked', [$member, $location, $unlockTime??NULL], Email::TYPE_TRANSACTIONAL )->send( $member );
$member->logHistory( 'core', 'login', ['type' => 'lock', 'count' => $member->failedLoginCount( Request::i()->ipAddress() ), 'unlockTime' => $unlockTime?->getTimestamp()] );
}
}
@@ -459,7 +464,7 @@ class Login
{
$diffValue = $unlockTime->diff( new DateTime() )->format('%i') ?: 1;
throw new Exception( Member::loggedIn()->language()->addToStack( 'login_err_locked_unlock', FALSE, array( 'pluralize' => array( $diffValue ) ) ), Exception::ACCOUNT_LOCKED );
throw new Exception( Member::loggedIn()->language()->addToStack( 'login_err_locked_unlock', FALSE, ['pluralize' => [$diffValue]] ), Exception::ACCOUNT_LOCKED );
}
else
{
@@ -512,7 +517,7 @@ class Login
{
if( $admin )
{
return Member::loggedIn()->language()->addToStack( 'member_name_exists_admin', FALSE, array('sprintf' => array( $handler->_title ) ) );
return Member::loggedIn()->language()->addToStack( 'member_name_exists_admin', FALSE, ['sprintf' => [$handler->_title]] );
}
else
{
@@ -540,16 +545,16 @@ class Login
$existingMember = Member::load( $email, 'email' );
if ( $existingMember->member_id and ( !$exclude or $exclude->member_id != $existingMember->member_id ) )
{
$url = Url::internal( "app=core&module=system&controller=lostpass", "front", "lostpassword" );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, array( 'sprintf' => array( (string) $url ) ) );
$url = Url::internal( 'app=core&module=system&controller=lostpass', 'front', 'lostpassword' );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, ['sprintf' => [(string) $url]] );
}
/* Check if someone requested to change to this email */
try
{
$test = Db::i()->select( '*', 'core_validating', [ 'email_chg=? and new_email=?', 1, $email ] )->first();
$url = Url::internal( "app=core&module=system&controller=lostpass", "front", "lostpassword" );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, array( 'sprintf' => array( (string) $url ) ) );
$url = Url::internal( 'app=core&module=system&controller=lostpass', 'front', 'lostpassword' );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, ['sprintf' => [(string) $url]] );
}
catch( UnderflowException ){}
@@ -560,12 +565,12 @@ class Login
{
if( $admin )
{
return Member::loggedIn()->language()->addToStack( 'member_email_exists_admin', FALSE, array('sprintf' => array( $handler->_title ) ) );
return Member::loggedIn()->language()->addToStack( 'member_email_exists_admin', FALSE, ['sprintf' => [$handler->_title]] );
}
else
{
$url = Url::internal( "app=core&module=system&controller=lostpass", "front", "lostpassword" );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, array( 'sprintf' => array( (string) $url ) ) );
$url = Url::internal( 'app=core&module=system&controller=lostpass', 'front', 'lostpassword' );
return Member::loggedIn()->language()->addToStack( 'member_email_exists', FALSE, ['sprintf' => [(string) $url]] );
}
}
}
@@ -666,7 +671,7 @@ class Login
static::$_registrationType = 'disabled';
}
if ( in_array( static::$_registrationType, array( 'normal', 'full' ) ) and !Handler::findMethod( 'IPS\Login\Handler\Standard' ) )
if ( in_array( static::$_registrationType, ['normal', 'full'] ) and !Handler::findMethod( 'IPS\Login\Handler\Standard' ) )
{
static::$_registrationType = 'disabled';
}
@@ -699,14 +704,14 @@ class Login
Request::i()->clearLoginCookies();
/* Destroy the session (we have to explicitly reset the session cookie, see http://php.net/manual/en/function.session-destroy.php) */
$_SESSION = array();
$_SESSION = [];
$params = session_get_cookie_params();
setcookie( session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] );
session_destroy();
session_start();
/* Member sync callback */
Event::fire( 'onLogout', Member::loggedIn(), array( $redirectUrl ?: Url::internal('') ) );
Event::fire( 'onLogout', Member::loggedIn(), [$redirectUrl ?: Url::internal( '' )] );
/* Check SSO Extensions for overloads */
if( Session::i() instanceof Front )