user-pofile.tpl.php - help!

Главные вкладки

Аватар пользователя vestris vestris 3 июля 2009 в 21:08

Нужно чтобы анонимные - и только - пользователи переходя по адресам drupal/user и drupal/user/* попадали на страницу ошибки 404.

Помогите, пжст.

Комментарии

Аватар пользователя vestris vestris 3 июля 2009 в 21:27

Анонимы видят форму логин-пароль. Поскольку на сайте аутентификация через апач (модуль securesite), логин форма по адресу drupal/user не нужна. В любом случае, спасибо за ответ. Оч. надеюсь решить вопрос.

Аватар пользователя Freedom Freedom 3 июля 2009 в 21:42

поставьте синоним.... и на другой страничке напишите что данная страница недоступна или ещё что то! Можете хоть картинку вогнать.

Аватар пользователя vestris vestris 3 июля 2009 в 22:58

Нельзя ли это сделать через override user-profile.tpl.php, т.е что-то вроде

"если пользователь авторизован, то print $user_profile"

???

Аватар пользователя vgoodvin vgoodvin 4 июля 2009 в 13:59

Проверьте значение глобальных переменных $user и $user->uid, если они равны "0", "false", либо вообще не определены (через isset(имя_переменной)), то пользователь анонимный и его надо перенаправить.
Только не забудьте написать global $user в начале.

Аватар пользователя vestris vestris 4 июля 2009 в 19:47

Ситуация следующая. В файле modules/user/user.pages.inc в конце есть функция:

<?php function user_page() {
  global 
$user;
  if (
$user->uid) {
    
menu_set_active_item('user/'$user->uid);
    return 
menu_execute_active_handler();
  }
  else {
      return 
drupal_get_form('user_login');
  }
}
?>

Соотв. нужно "перекрыть" строчку с else - заменить на <?php print drupal_goto('404'); ?>

Аватар пользователя vestris vestris 5 июля 2009 в 14:16

Пробовал. Форма все равно остается.
Пока закомментировал строчку c login_form в user.pages.inc.

Хотелось бы, конечно, иначе... но никакие изменения в user-profile ни к чему не привели.

Аватар пользователя vgoodvin vgoodvin 5 июля 2009 в 20:48

А если ввести проверку на анонимность пользователя в page.tpl.php? Только конечно перед этим проверить является ли страница user/*. Если мне нужно изменить показ какой-либо страницы, делаю изменения в этом файле, все работает безошибочно.

Аватар пользователя vestris vestris 5 июля 2009 в 22:05

Надо попробовать...

Параллельно возник вопрос с logout. При включенном securesite (basic auth.) друпал на выходе запрашивает логин и пароль... почему?

Аватар пользователя vgoodvin vgoodvin 5 июля 2009 в 23:54

Никогда не сталкивался с такой проблемой. А как вы вообще выполняете logout? Переходом на страницу ?q=logout или иначе?

Аватар пользователя vestris vestris 6 июля 2009 в 1:43

Переходом на страницу.
Сайт имеет несколько скрытых страниц через node_access плюс форум, все разделы которого также закрыты от анонимов.
Модуль securesite. Если аноним заходит на запрещенную страницу, то видит окно аутентификации Apache. Если пароля нет, или он неверный, securesite адресует анонима к форме восстановления пароля. Если верный, после входа происходит редирект на "главную" страницу для пользователей.
Соответственно, если после входа перейти по ссылке drupal/logout или ?q=logout, следовало бы ждать просто завершения сессии и т.п. Сессия действительно завершается, однако, по дороге всплывает всё то же окно аутентификации (от которого, собственно, ничего не зависит). Возможно это как-то связано с установками редиректа в модуле user... пока не понимаю.

Аватар пользователя vgoodvin vgoodvin 6 июля 2009 в 3:21

А это не может быть из-за того, что просто securesite так работает? Не пробовали проверять его на новом пустом друпал-сайте? Может стоит покопать в направлении этого модуля?

Аватар пользователя vestris vestris 6 июля 2009 в 18:06

По некоторым соображениям решили теперь отказаться от этого модуля.
Большое спасибо за советы, по дороге многое для себя узнал .)