[Pешено]Нужно ограничить не зарегистрированным пользователям доступ к страницам, но как?

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

Аватар пользователя ERET1K ERET1K 2 сентября 2013 в 13:57

Каким способом анонимным пользователям ограничить доступ к определенным страницам сайта?
Если есть способ, соизвольте описать так, чтоб было понятно человеку незнакомому с некоторыми терминами и модулями в  drupal.

Комментарии

Аватар пользователя Niklan Niklan 2 сентября 2013 в 14:35

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:

Довелось мне его 1 раз попробовать, УЖАС.

Можно на уровне своего мини-модуля сделать, либо рулсами.

Аватар пользователя ERET1K ERET1K 2 сентября 2013 в 16:24

Удивительно насколько ленивые здесь люди. Интересно вы всем так отвечаете?!
Зчем вообще отвечать если толку от этого ровным счетом 0!

Понимаете Я не заканчивал ИНЯЗ! И английский знаю на довольно низком уровне! И в следствии этого прошу опишите!

И больших знаний в программировании у меня нет! Так как опять же Я не учился в ВУЗе на прогера! Единственное что могу себе позволить на зарплату токаря: это курсы по C++ и то только четыре занятия в месяц!

А вы все предлагаете напиши то, примени это. Можно пожалуйста относиться к людям которые задают вопросы НЕ КАК К ДЕРЬМУ!

Аватар пользователя gedeon gedeon 2 сентября 2013 в 18:01

Дмитрий, так может не люди,а Вы ленивый. Попробуйте для начала изучить это - http://content-management-systems.info/ , чтоб хоть понимать язык, термины. Как Вам объяснить если Вы не понимаете языка, на котором с Вами разговаривают? Сразу хватаетесь сайт делать? Сначала надо азбуку изучить, а потом уже читать, учиться и только потом получив необходимый объем знаний переходит осторожно к сайтостроительству.

Еретика, после первого и второго вразумления, отвращайся…” (Тит.3:10-11)

Аватар пользователя Niklan Niklan 2 сентября 2013 в 17:08

"ERET1K" wrote:
Удивительно насколько ленивые здесь люди. Интересно вы всем так отвечаете?!
Зчем вообще отвечать если толку от этого ровным счетом 0!

После жумла(вп,дле,юкоз)-сообществ непривычно?

"ERET1K" wrote:
Понимаете Я не заканчивал ИНЯЗ! И английский знаю на довольно низком уровне! И в следствии этого прошу опишите!

Зачем лезть в друпал? Везде где хоть как-то по делу расписано о Drupal сказано, что если в планах разрабатывать, а не программировать мышкой, то нужно знать англ.

На вопрос по теме есть решение и на русском языке. Я сам как минимум 2 писал. Это говорит о том что никто не гуглит.

"ERET1K" wrote:
И больших знаний в программировании у меня нет! Так как опять же Я не учился в ВУЗе на прогера! Единственное что могу себе позволить на зарплату токаря: это курсы по C++ и то только четыре занятия в месяц!

А вы все предлагаете напиши то, примени это. Можно пожалуйста относиться к людям которые задают вопросы НЕ КАК К ДЕРЬМУ!


Во-первых, причем тут C++ и Drupal? Они делаются на разных языках.
Во-вторых, не нужны никакие курсы. В интернете информации больше и актуальнее. Как правило все таке курсы проводят "профессионалы", судя по тому что я видел и рекламируют в инете. Порой даже домен от CMS не отличают, ох*еть можно.

Аватар пользователя S_F S_F 2 сентября 2013 в 17:51

Мне кажется у ТС какие то комплексы.. Молодой человек, видимо Вы сами себя считаете необразованным дерьмом, раз позволяете себе такие выпады. Вы задали вопрос, вам ответили на него, если Вы не смогли понять что Вам ответили, то это ВАШИ проблемы. И решать их за вас никто не будет. Хотите расти в вебе - учитесь, материалов достаточно.

Аватар пользователя ERET1K ERET1K 2 сентября 2013 в 18:35

Да все таки Я прав, навести в теме холивара это вы Сразу! Интересно чем занимаются модераторы? если они вообще есть!

Уважаемый мистер Niklan Я переведу любой англоязычный текст, но если меня ткнуть в него рожей Я буду очень благодарен! А искать в мануалах которые мне выдаст гугл Я буду значительно дольше!

Аватар пользователя Niklan Niklan 2 сентября 2013 в 18:39

"ERET1K" wrote:
Уважаемый мистер Niklan Я переведу любой англоязычный текст, но если меня ткнуть в него рожей Я буду очень благодарен! А искать в мануалах которые мне выдаст гугл Я буду значительно дольше!

Есть даже ну русском, как минимум 2 штуки, как минимум написаны мною лично. А таких как я десятки.

Так и быть:
раз - http://niklan.net/blog/33
два - http://niklan.net/blog/28 (тут раздел про блокировку доступа)

Два способа. Руками, и рулсами. И таких способов можно на русском найти несколько десятков.

Аватар пользователя gedeon gedeon 2 сентября 2013 в 19:02

Niklan wrote:

Так и быть:
раз - http://niklan.net/blog/33
два - http://niklan.net/blog/28 (тут раздел про блокировку доступа)

Два способа. Руками, и рулсами. И таких способов можно на русском найти несколько десятков.

интересный блог. спасибо.

Аватар пользователя ERET1K ERET1K 10 ноября 2015 в 11:49

Благодарю пользователя Niklan за предоставленный мануал. Честь ему и похвала на веки вечные!

А теперь по теме, как Я решил ситуацию:
В предоставленом мануале есть модуль написанный самим Niklan для ограничения доступа страницам типа Ticket - (хотя причем тут билет Я не понял) для его использования в нужном мне деле для начала требуеться:
поменять 14-ю строку файла ticket_access.module
с if ($account->uid == $node->uid)
на
if ($account->status == 1)
Далее в строке 12 удалить ненужное право:
с if (($node->type == 'ticket') && (($op == 'view') || ($op == 'update')))
на
if (($node->type == 'ticket') && ($op == 'view'))
затем удалить всю вторую функцию начинающуюся со строки 23.
После чего просто создать тип материала ticket, создавать сраници данного типа и печатать там что только вздумается! И все это не будет доступно пользователю пока он не зарегестрируется!

P.S. есть лишь один баг, иправлять на данный момент, мне его ужасно лень! Он заключаеться в том что не зарегистрированный пользователь в место страници видит ошибку.

[img]http://www.drupal.ru/files/snimok_ekrana_2013-09-02_v_20.29.04_0.png[/img]

Аватар пользователя Niklan Niklan 2 сентября 2013 в 22:49

"ERET1K" wrote:
Ticket - (хотя причем тут билет Я не понял)

тикет не в смысле билет, а обращение в службу поддержки. Их называют тикетами.

"ERET1K" wrote:
После чего просто создать тип материала ticket

не обязательно, можно создать материал whateveryouwhant и просто заменить
if (($node->type == 'ticket') && ($op == 'view'))
на

if (($node->type == 'whateveryouwhant') && ($op == 'view'))

Полный код кидайте уж чтобы решить ошибку. Что за $status, такой переменной нету в моем примере.

Аватар пользователя ERET1K ERET1K 10 ноября 2015 в 11:49

Прикрепляю код.

status - столбец базы mysql, который находиться в таблице users, этот столбец определяет заблокирован пользователь или нет.
1- активный
0-заблокирован

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

+ картинка как выглядит столбец статус
[img]http://content-2.foto.mail.ru/mail/dmitrybarynov/_answers/s-944.jpg[/img]

Аватар пользователя Niklan Niklan 2 сентября 2013 в 22:46

"ERET1K" wrote:
status - столбец базы mysql, который находиться в таблице users, этот столбец определяет заблокирован пользователь или нет

а кто сказал что он передается...

Аватар пользователя ERET1K ERET1K 2 сентября 2013 в 23:16

))) ну ведь работает!
не веришь могу кинуть свой ip в личку.

P.S. Я и ещё один мой друг рылись в ядре (сайт временно в режиме зомби Lol и как Я понимаю все обращения $account->"тут имя столбца" приводят к базе данных, таблице users и соответственно заданному столбцу.

Аватар пользователя Niklan Niklan 2 сентября 2013 в 23:23

"ERET1K" wrote:
Я понимаю все обращения $account->"тут имя столбца" приводят к базе данных

нет

Да, по сути статус туда передается, но почему еррорит то?

Аватар пользователя ERET1K ERET1K 2 сентября 2013 в 23:28

Ну потому что пытается получить статус пользователя гость. Но ведь пользователя гость в таблице users нет!
На всех других зарегистрированных пользователях никакой ошибки нет. И страница успешно выводиться.

Аватар пользователя Niklan Niklan 2 сентября 2013 в 23:37

Действительно, чего-то не сообразил, тогда делаем так:

<?php

/**
 *  Применяем hook_node_access().
 *
 *  Блокирует доступ к ноде 'ticket' всем пользователям, кроме автора и админа.
*/

function ticket_access_node_access($node, $op, $account)
{
  if (is_object($node))
  {
    if (($node->type == 'ticket')  && ($op == 'view'))
    {
      if (isset($account) && $account->status == 1)
      {
        return NODE_ACCESS_ALLOW;
      }
      else
      {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

Бошка уже не варит, 2 часа ночи, мб решить ошибку.

Аватар пользователя S_F S_F 3 сентября 2013 в 14:02

Не, тикет=билет нормально. Все переводчики так выдают, а у нас это англицизм со значением -обращение в ТП. Если не сталкивался, то вполне можно не знать.

Аватар пользователя S_F S_F 5 сентября 2013 в 21:10

"jsv" wrote:
Аватар пользователя jsv

Откуда такие агрессивные вопрошающие прибегают? Из Джумлы или из самописных своих CMS?

Читай внимательно, с завода.