Перейти к содержанию
IPS Invision Community 🇷🇺

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


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

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

 

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 - функция не работает! Буду благодарен за вашу помощь.

Ссылка на комментарий
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;
}

 

Ссылка на комментарий

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

 

Ссылка на комментарий

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

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

 

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

Ссылка на комментарий

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...
Вверх
Вверх