рассылка по ролям

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

Аватар пользователя vrazbros vrazbros 25 декабря 2007 в 12:41

Нужно реализовать рассылку для определенной группы пользователей, например привилегированный пользователь. Остальные пользователи из других ролей (анонимусы, просто авторизованные) ее видеть не должны!
Потестил simplenews он такое сделать не позволяет. simplenews role зависти вообще не удалось Sad есть какието другие варианты ?

Комментарии

Аватар пользователя Pozniy Pozniy 25 декабря 2007 в 14:35

С simplenews это можно сделать двумя путями. Первый обструкционный, "полуручной", если устроит по концепции - формировать список привилегированных вручную, не выводить подписной блок и нигде не упоминать ссылки на их архив (кроме может быть в самих сообщениях рассылки).

Второй (теоретически) - это использовать дополнительную инфраструктуру таксономий (на базе модуля http://drupal.org/project/taxonomy_access или http://drupal.org/project/tac_lite) для ролевого доступа. При этом блоки (и ссылки на архивы) могут быть видны всем, а вот для "кого не надо" скрытые страницы будут давать "Доступ запрещен". Достигается это созданием специального "словаря" уровней доступа (к каждому уровню привязывается своя группа ролей, составляется "карта доступа" для каждой таксономии из словаря). К типу материала "ньслеттер ишуе" и "ньслеттер" ("выпуск рассылки" и "рассылка") привязывается этот словарь уровня доступа, как обязательный. В итоге, для посетителей из других групп материалы становятся недоступны. Видимость же блоков к ролям привязать и того проще.

Я именно этот вариант не пробовал. Но на 4.7 тестировал аналогичную задачу с simplenews и на базе аналогичных возможностей category (Category access control lite). Тестовое задание тогда было отработано. Для 5.* к сожалению проверить данное решение затруднительно, т.к. текущие версии simplenews и category несовместимы.

А модуль Mail - только для 4.7 ( http://drupal.org/project/mail ), пока по крайней мере.

Аватар пользователя vrazbros vrazbros 25 декабря 2007 в 17:35

с первым вариантом, когда просто не выводить аод блок не получится тк доступ к newsletter/subscriptions/ все имееют.
а с вторым вариантом как то совсем запутано все...

Аватар пользователя Алешка Алешка 25 декабря 2007 в 16:01

Почти не по теме, но рядом: Интересует возможность разграничения доступа контента пользователям.
Конкретно: В корпоративе я поднял Друпал, Необходимо, чтобы зарегистрированный пользователь Отдела продаж получил доступ только к справочной информации и доступ к страницам "зарегистрировать абонента". Я, как техподдержка (интернет), имею доступ к страницам, где ведется работа с абонентами (история заявок, личные данные и пр). Есть ощущение, что таксономия мне может помочь.
Покопаю ответ Pozniy поглубже.... Но просьба: Тыкните носом, пжл.

Аватар пользователя Pozniy Pozniy 25 декабря 2007 в 23:35

>с первым вариантом, когда просто не выводить аод
>блок не получится тк доступ к newsletter/subscriptions/ все имееют.

В этом случае туда никто не должен иметь доступ. Точнее - не знать об этом доступе.

>а с вторым вариантом как-то совсем запутано все...

Ну батенька... Это реализация системы разграничения прав доступа. Естественно надо повозиться чуток. Хотя что здесь запутанного? - устанавливаются упомянутые ранее модули и:

1. Создается словарь типа "Статусы доступа". Для него указывается тип материала, который используют термы этого словаря - "выпуск рассылки" и то, что может быть выбран только единственный терм для каждой ноды (э-э-э, вот здесь я не знаю в деталях, достаточно для этого ли указанных модулей или есть дополнительные, устанавливающие связь между типами нод и словарями, я то использую сейчас categoty, а там эти настройки "всё в одном" и на одной странице, тем не менее).

2. Если есть возможность привязать к этому же словарю тип материала "термы", то это необходимо сделать (но установить как НЕобязательное соответствие). Здесь получается "рекурсия" (термы словаря требуют при создании назначения термов из этого же словаря, но category такую комбинацию обрабатывает "интуитивно" правильно, надеюсь taxonomy не хуже)

3. Создаются несколько терминов, к примеру "Для всех", "Для некоторых", "Только для крутых".

4. Открывается "Контроль доступа" в админке. Там (или в другом месте в админке) должна быть панель-закладка (появится после установки модулей), для установки соответствия какие роли к каким термам имеют доступ. Устанавливается.

Вот собственно и всё.

При установке simplenews автоматом создается simplenews-словарь (или терм, уже не помню, но это неважно) и одна рассылка как терм. Необходимо сразу же зайти в настройки (редактирование) и выбрать для этой рассылки терм "Для всех" из словаря "Статусы доступа". Далее создаем вторую рассылку, но для неё устанавливаем "Только для крутых". Этим мы определяем, что при выводе содержимого simplenews в зависимости к какой группе принадлежит пользователь, он получит или только перечень термов (или список нод) которые доступны по статусу - "все" видят только первую рассылку, "крутые" - и первую и вторую (аналогично будет со списком выпусков рассылок).

При создании конкретных выпусков рассылок (нод "ньюслеттер исуе") соответственно не забываем устанавливать нужный терм (сообразно рассылке) из словаря для "Статусы доступа" - здесь надо быть внимательным, поскольку утилитарно задать конкретный тип терма для нод конкретной рассылки значительно сложнее (в category и с этим можно извратиться).

Конечно, некоторые ньюансы необходимо откатать и экспериментально отработать, подогнать под конкретную выдачу на страницах. Но если сайт использует стандартные, корректные ("правильные") модули с корректным использованием правил API Друпала (а simplenews вроде бы нормальный в этом отношении) всё должно работать. Поскольку для этого и создавались модули с такими возможностями.

Стоит только начать... Smile

Аватар пользователя vrazbros vrazbros 26 декабря 2007 в 13:13

Simplenews не совместимо с модулем category. Вообщем, поставил taxanomy access control lite, с помошью него можно ограничить доступ к определеным терминам словаря, которые являются рассылками. Вот собственно и все Smile

Аватар пользователя Алешка Алешка 26 декабря 2007 в 16:02

Privatemsg Mass Mailer... Любопытно, попробую прикрутить.
Вопрос остался по разграничению доступа контента пользователям. Модуль Taxonomy Access Control позволил сделать ограничение нодов по ролям как хотелось. Эти роли и на рассылку буду использовать. Может быть кто-то подскажет, как сделать ссылку типа http://сайт/taxonomy/term/16 доступной для пользователя, для которого разрешено просматривать http://сайт/taxonomy/term/13 (http://сайт/taxonomy/term/16 то же самое, что и http://сайт/taxonomy/term/13+14+15). Банально пишет "страница не найдена". При галочке Управление сайтом > пользователи > роли > модуль taxonomy > управлять таксономией ссылка работает. Только не хочется пускать пользователя в управление таксономией.