Создание альтернативной страницы входа, кроме /user /login

Мне удалось сделать это в Drupal 7 со следующим кодом:

function my_special_paths_menu() {

    $items['authenticate'] = array(
        'title' => 'Log in',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('user_login'),   
        'access callback' => 'user_is_anonymous',   
      );
     return $items;
    }

Мой вопрос: этот код завершен или ему не хватает какой-либо конфигурации в массиве элементов меню? Безопасен ли код так, как он есть?

7 голосов | спросил W.M. 10 AMpSun, 10 Apr 2016 09:45:47 +030045Sunday 2016, 09:45:47

1 ответ


7

Да, ваш код завершен и безопасен, как форма входа по умолчанию.

Однако имейте в виду, что если вы хотите заменить форму /user/login, вам нужно будет подумать обо всех сценариях, в которых пользователи могут оказаться там (например, токен [site:login-url], другие модули и т. д.) и обрабатывать их соответствующим образом через перенаправления или доступ к отказу ответа (например, если вы будете единственным зарегистрированным пользователем на сайте).

Вот основные сведения:

Перенаправление

Если вы хотите перенаправить пользователей из /user/login в /authenticate по какой-либо причине вам потребуется либо использовать модуль Redirect , либо Внесите hook_menu_alter() в свой пользовательский модуль:

function YOUR_MODULE_menu_alter(&$items) {
  $items['user/login']['page callback'] = 'drupal_goto';
  $items['user/login']['page arguments'] = 'authenticate';
}

Замена

Если вы хотите сделать /user/login недоступным для всех других пользователей, вы можете просто отключить этот путь, снова выполнив hook_menu_alter() в вашем пользовательском модуле:

function YOUR_MODULE_menu_alter(&$items) {
  $items['user/login']['access callback'] = FALSE;
}

Однако имейте в виду, что вам придется тщательно протестировать все и убедиться, что у вас нет модулей, которые зависят от системы /user/login, а также отсутствие рабочих процессов (например, теги [site:login-url]).

Надеюсь, что это поможет.

ответил Aram Boyajyan 10 AMpSun, 10 Apr 2016 10:27:28 +030027Sunday 2016, 10:27:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132