Блин, вроде программист а приходится на пальцах объяснять. Столько слов, что в итоге и сам запутался. Речь не о том, сохраняется пароль или нет, это без разницы, проблема с сменой паролем на удаленном сайте решается перемещением метода внешней авторизации вверх, чтобы он первый отработал или вообще отключением внутреннего. Не хотите сохранять, не храните (но я бы все таки в таком случае вызвал дефолтный метод _createMember а потом удалил пароль, все таки плахой тон перегружать методы не вызывая родительский если вдруг какому нибудь другому хуку потребуется его перегрузить). А речь о том, что будет если какой нидубь апи интерфейс вызовет смену пароля? Например, смена пароля какому нибудь пользователю из АЦ (хз если ли такая функция в четверке, но в api это точно есть)? Мне кажется \IPS\Member::loggedIn()->name вернет не совсем соответствующие данные. Т.е. если нет значения у переменной $_POST['auth'], будет использоваться имя текущего пользователя если он есть, и даже если вы вернете нулл пароль все равно сбросится, потому что в changePassword нет никакой проверки. Проще уже не знаю как объяснить, извините.
if( !empty( $_POST['auth'] ) ) {
$username = $_POST['auth'];
}else if( !empty( \IPS\Member::loggedIn()->name ) ) {
$username = \IPS\Member::loggedIn()->name;
} else {
return null;
}
С форума будет работать.
Проблемы начнутся если администратор захочет чужому пользователю сменить пароль. И речь не о том, сохраняется он на форуме или нет, а в том, что в коде используется имя текущего пользователя.