Jump to content

Быстрая авторизация


Trotor
 Share

Recommended Posts

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

 

Как бы это исправить?

 

<?php

class public_core_global_quickLogin extends ipsCommand 
{	
private $output;

public function doExecute( ipsRegistry $registry )
{
	/* Watcha up to? */
	switch ( $this->request[ 'do' ] )
	{
		Case 'login':
		default:
			$this->quickLogin();
		break;
	}

	/* Print */
	$this->registry->output->addContent( $this->output );
	$this->registry->output->sendOutput();
}

public function quickLogin()
{
	$this->registry->getClass( 'class_localization' )->loadLanguageFile( array( 'public_login' ), 'core' );

	if ( $this->memberData['member_id'] )
	{
		$this->registry->output->showError( 'no_permission' );
	}

	$this->output = $this->registry->output->getTemplate( 'global' )->quickLoginForm();
	return $this->output;
}
}

 

Link to comment
Share on other sites

Хорошо бы посмотреть хук этот.

 

Parse error: syntax error, unexpected ''] ) ); ' (T_ENCAPSED_AND_WHITESPACE), expecting ']' in

В вышеприведенном коде удалить лишнюю кавычку после this_url' (ошибка).

 

Или

 

После

 

return $this->output;

Добавить

 

$this->registry->getClass('output')->silentRedirect( $this->registry->output->formatUrl( $this->settings['this_url'] ) );

По идее должно работать.

Edited by Strategius
Link to comment
Share on other sites

По идее что-то такое нужно:

$this->output = $this->registry->output->getTemplate( 'global' )->quickLoginForm();

Заменить на:

$this->output = $this->registry->output->getTemplate( 'global' )->quickLoginForm( $_SERVER['HTTP_REFERER'] );

В настройках шаблона "quickLoginForm" добавить переменную:

$referer = ''

Но до конца не уверен, поскольку в вашем файле XML ничего кроме этого шаблона и языковой строки нет, непонятно каким методом попап грузится. Если вместе с глобальным шаблоном, то правка должна работать.

Странный какой-то полуфабрикат, частично заливаемый, частично устанавливаемый и видимо должна быть ещё ручная правка глобального шаблона с яваскрипт.

  • Upvote 2
Link to comment
Share on other sites

Но до конца не уверен, поскольку в вашем файле XML ничего кроме этого шаблона и языковой строки нет, непонятно каким методом попап грузится. Если вместе с глобальным шаблоном, то правка должна работать.

Странный какой-то полуфабрикат, частично заливаемый, частично устанавливаемый и видимо должна быть ещё ручная правка глобального шаблона с яваскрипт.

Вообще то да, забыл уточнить. В шаблон includeJS добавлялось это:

.js,public/js/ips.quicklogin.js (после &f=public/js/ipb.js,public/js/ips.quickpm)

 

 

Заменить на:

и

В настройках шаблона "quickLoginForm" добавить переменную:

Добавил. При авторизации, выдаёт nopermission на белой странице.

Может quickLogin.php из директории ajax тоже следует отредактировать?

Link to comment
Share on other sites

Достаточно отредактировать шаблон quickLoginForm

А ну да. Заменить:

		<if test="referer:|:$referer">
	<input type="hidden" name="referer" value="{$referer}" />
	</if>

На:

		<input type="hidden" name="referer" value="{$this->settings['this_url']}" />

Хотя и с предыдущей правкой будет работать, отредактировал её.

Link to comment
Share on other sites

Достаточно отредактировать шаблон quickLoginForm

Не работает.

При авторизации, выдаёт nopermission на белой странице.

 

Хотя и с предыдущей правкой будет работать, отредактировал её.

Хм... Тоже самое - выдаёт nopermission на белой странице.

Link to comment
Share on other sites

Вставьте в нaчало шаблона:

<php>print $settings['this_url'];exit;</php>

И скопируйте сюда url, что там в окне будет.

 

P.S. Возможно, ещё потребуются правки яваскрипт, html кнопки "Быстрый вход" и аякс-обработчика.

P.P.S. Правку в 6-ом сообщении ещё раз отредактировал, пробуйте. Замену строки, с вызовом шаблона "quickLoginForm()", нужно делать в обоих файлах quickLogin.php.

  • Upvote 1
Link to comment
Share on other sites

P.P.S. Правку в 6-ом сообщении ещё раз отредактировал, пробуйте. Замену строки, с вызовом шаблона "quickLoginForm()", нужно делать в обоих файлах quickLogin.php.

Вот! Правка помогла + замена строки именно в двух файлах. Спасибо.

Link to comment
Share on other sites

Вот! Правка помогла + замена строки именно в двух файлах. Спасибо.
Помогло то, что я влез на ваш форум, посмотрел яваскрипт и код кнопки. Заливать нужно было полный архив с модификацией, а не один шаблон сиротливый.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...