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 реакций
Открыть сообщение
Создайте учетную запись или войдите, чтобы комментировать
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти