Stinger2015 Опубликовано 22 мая, 2018 Поделиться Опубликовано 22 мая, 2018 Суть проблемы следующая, я использовал для входа с другой страницы следующую функцию. function doLogin( $username, $password, $rememberMe=true, $anonymous=false ) { $login = new \IPS\Login( \IPS\Http\Url::internal('') ); $login->forms(); try{ $member = $login->authenticateStandard(array( 'auth' => $username, 'password' => $password, )); } catch( \IPS\Login\Exception $e ) { return false; } if ( $anonymous and !\IPS\Settings::i()->disable_anonymous ) { \IPS\Session::i()->setAnon(); \IPS\Request::i()->setCookie( 'anon_login', 1 ); } \IPS\Session::i()->setMember( $member ); if ( $rememberMe ) { $expire = new \IPS\DateTime; $expire->add( new \DateInterval( 'P7D' ) ); \IPS\Request::i()->setCookie( 'member_id', $member->member_id, $expire ); \IPS\Request::i()->setCookie( 'login_key', $member->member_login_key, $expire ); if ( $anonymous and !\IPS\Settings::i()->disable_anonymous ) { \IPS\Request::i()->setCookie( 'anon_login', 1, $expire ); } } $member->memberSync( 'onLogin', array( \IPS\Login::getDestination() ) ); return $member; } Так вот после перехода на 4.3.x - функция не работает! Буду благодарен за вашу помощь. Ссылка на комментарий
anufmikh Опубликовано 22 мая, 2018 Поделиться Опубликовано 22 мая, 2018 function doLogin( $username, $password, $rememberMe = TRUE, $anonymous = TRUE ) { $method = \IPS\Login\Handler::load( 1 ); $login = new \IPS\Login( \IPS\Http\Url::internal( '' ) ); try { $member = $method->authenticateUsernamePassword( $login, $username, $password ); } catch( \IPS\Login\Exception $e ) { return FALSE; } return $member; } Ссылка на комментарий
Stinger2015 Опубликовано 22 мая, 2018 Автор Поделиться Опубликовано 22 мая, 2018 Большое спасибо anufmikh, что хотел помочь , решилось таким путём. function doLogin( $username, $password ){ $member_login = \IPS\Member::load( $username, 'name' ); if ( $member_login->member_id ){ $member = \IPS\Login\Handler::findMethod( 'IPS\Login\Handler\Standard' )->authenticatePasswordForMember( $member_login, $password); if ( $member ){ $device = \IPS\Member\Device::loadOrCreate( $member_login ); $device->updateAfterAuthentication( TRUE ); return "ok"; } else { return "incorrect_password"; } } else { return "user_not_exist"; } } Ссылка на комментарий
Stinger2015 Опубликовано 22 мая, 2018 Автор Поделиться Опубликовано 22 мая, 2018 Теперь проблема следующая, при входе, не удаётся получить вот это: \IPS\Dispatcher\Build::i(); $lang = \IPS\Lang::load( \IPS\Lang::defaultLanguage() ); $member = \IPS\Member::loggedIn(); $member_id = $member->member_id; $name = $member->name; $photo = $member->photo; $group_id = $member->member_group_id; $group_name = $member->groupName; $email_ipb = $member->email; \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $group_name ); Это всё удаётся получить если зайти на форум и обновить страницу БАНАЛЬНО) Ссылка на комментарий
Рекомендуемый комментарий Stinger2015 Опубликовано 22 мая, 2018 Автор Рекомендуемый комментарий Поделиться Опубликовано 22 мая, 2018 Просьба переименовать тему , почистить, и выложить решение этой проблемы, возможно кому то пригодится! function doLogin( $username, $password ) { $member_login = \IPS\Member::load( $username, 'name' ); if ( $member_login->member_id ){ $member = \IPS\Login\Handler::findMethod( 'IPS\Login\Handler\Standard' )->authenticatePasswordForMember( $member_login, $password); if ( $member ){ \IPS\Session::i()->setMember( $member_login ); $device = \IPS\Member\Device::loadOrCreate( $member_login ); $device->updateAfterAuthentication( TRUE ); return "ok"; } else { return "incorrect_password"; } } else { return "user_not_exist"; } } P.S Спасибо тем не многим, кто откликнулся. Ссылка на комментарий
Рекомендуемые сообщения
Опубликовал Stinger2015,
0 реакций
Открыть сообщение
Создайте учетную запись или войдите, чтобы комментировать
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти