Перейти к публикации
4.3.3
Stinger2015

Авторизация с другой страницы

Рекомендованные сообщения

Stinger2015

Суть проблемы следующая, я использовал для входа с другой страницы следующую функцию.

 

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
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

Большое спасибо 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Stinger2015

Теперь проблема следующая, при входе, не удаётся получить вот это:

\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 );    

 

Это всё удаётся получить если зайти на форум и обновить страницу  БАНАЛЬНО)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×