Intereting Posts
Ошибка PHPExcel в CodeIgniter «Не удалось загрузить запрошенный класс: iofactory» Как получить данные с нулями в красноречивой Что это за предупреждение PHP: «Невозможно изменить информацию заголовка»? совпадение совпадений заполните 3 текстовое поле из окна выбора ajax way php / SQL – печатает много слов 4 раза между каждыми 4 именами со многими условиями Как вы запрещаете людям переходить на страницу, которая должна использоваться как страница входа? Проверьте, существует ли изображение на удаленном URL-адресе Как отображать последние комментарии от Facebook Комментарии социальный плагин? Как проверить, существует ли файл на удаленном сервере с помощью PHP? Как получить номер кодовой точки для заданного символа в строке utf-8? Ajax DataType: ответ JSON: OK, но нет вывода? Есть ли способ исключить маршрут из защиты CSRF из пакета в Laravel 5? regexp для поиска файла пути изображения в теге изображения SilverStripe 3 Фильтрация / фильтрация DataObjects в функции

Как изменить целевую страницу Mediawiki 1.19.1, чтобы перейти в Special: UserLogin

Я пытаюсь настроить частный экземпляр Mediawiki, который ожидает, что пользователи войдут в систему, чтобы увидеть какой-либо контент. Я попытался настроить переменную $ wgWhitelistRead в файле Localsettings.php, но она все равно выводит меня на страницу с надписью «Login Required». Я хочу, чтобы вики перенаправляли на Special: userLogin, если пользователь не вошел в систему. Как это сделать?

Я нашел аналогичный вопрос на mwforums, но, похоже, для более старой версии mediawiki. Есть идеи?

Solutions Collecting From Web of "Как изменить целевую страницу Mediawiki 1.19.1, чтобы перейти в Special: UserLogin"

По-видимому естественное место для этого было бы в OutputPage :: showPermissionsErrorPage () . В частности, фактическое сообщение об ошибке отображается в следующих двух строках:

$this->prepareErrorPage( $this->msg( 'loginreqtitle' ) ); $this->addHTML( $this->msg( $msg )->rawParams( $loginLink )->parse() ); 

Чтобы перенаправить непосредственно на Special: UserLogin, вы можете заменить их чем-то вроде этого (непроверенного!) Кода:

 $this->redirect( SpecialPage::getTitleFor( 'Userlogin' )->getFullURL( $query ) ); 

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

(В качестве альтернативы вы действительно можете вывести форму входа на место, но это может быть немного сложнее реализовать, чем просто перенаправление на Special: UserLogin. С первого взгляда я не смог найти удобный метод «outputLoginForm ()» для вызова специальный: код UserLogin , и в то время как на самом деле сложно создать соответствующую форму входа самостоятельно, это означает, что любые последующие изменения формы могут нарушить совместимость.)

В качестве особо ужасного взлома вы можете поместить форму входа в сообщение, отображаемое при необходимости входа (это должно быть сообщение loginreqpagetext ). Это было бы нетривиально из-за защиты от CSRF, но вы можете обойти это через AJAX. (Есть, безусловно, гораздо лучшие решения, это просто быстрый и грязный способ сделать это.)