Настройка уровней доступа
Может, кому пригодится.
У меня была задача – есть несколько категорий материалов. И есть несколько групп пользователей. И каждая группа пользователей должна видеть только те материалы, которые ей позволено видеть.
Пробовала настроить все по логике – ничего не получалось: материалы видят не те, кому положено, а те, кому положено - не видят. Пришлось выключить логику и включить мозги. Получилось!
Если у вас есть задача по настройке уровней доступа, может эта информация вам поможет. Даже если ваша конкретная задача отличается от моей.
В моей задаче мне не надо было расписывать права на Действия на сайте (писать статьи, редактировать и т.д.) – мне это сейчас не надо. Мне надо было только определить права на доступ к отдельным материалам. Право на доступ к отдельным материалам настройками "наследовать", "разрешить", "запретить" - не регулируются. Поэтому была сложность. Пришлось оперировать только группами, уровнями доступа, настройками материалов, меню и пунктов меню. В конце концов, задачка была решена.
Задача: есть 4 группы зарегистрированных пользователей (гр1, гр2, гр3, гр4) и 4 категории материалов (м1, м2, м3,м4). Надо сделать так, чтобы пользователи из гр1 могли бы видеть только м1. Пользователи из гр2 могли бы видеть м1 и м2. Пользователи из гр3 могли бы видеть и м1, и м2, и м3. А пользователи из гр4 могли бы видеть все: м1, м2, м3 и м4.
В нашем распоряжении есть только то, что можно настроить на уровень доступа: категории, материалы, модули, пункты меню. Но при этом группу пользователей напрямую на уровень доступа мы назначить не можем. Наоборот, это уровень доступа настраивается на определенные группы. Именно здесь и скрыты основные непонятки. Но именно это и позволяет гибко настраивать группы и уровни доступа.
Итак. Что я сделала в своей конкретной ситуации. Расписываю по этапам. Расписываю подробно, потому что есть профи, которые сразу во все въехали. А есть такие чайники, как я. Которым надо подробно объяснить, на какую кнопочку, как и в какой последовательности надо нажимать, чтобы все работало.
1 Этап. Создание групп пользователей: менеджер пользователей – группы – создать – название и выбрать родителя. Создала гр1, гр2, гр3,гр4 – дочерние от «Зарегистрированных».
В закрытую часть сайта через внешний интерфейс могут попасть только пользователи, отнесенные к группе «Зарегистрированные», или пользователи, отнесенные к одной из дочерних групп от «Зарегистрированных». В своем примере гр1, гр2, гр3 и гр4 я сделала «дочерними» от «Зарегистрированных».
Где-то в настройках сайта я видела, что после регистрации пользователь автоматически попадает в группу «Зарегистрированные». Группу, в которую попадает пользователь после регистрации, конечно, при желании можно сделать другую. Но смысла в этом особого нет. Только запутаешься.
Дальше. Делать группы гр1, гр2, гр3, гр4 – вложенными друг в друга или нет? В моем случае это не важно, потому что в моем случае для пользователей не предполагается никаких Действий– только просмотр соответствующего материала.
Настройки "наследовать", "разрешить", "запретить", работающие для вложенных групп – они важны для Действий на сайте. Кстати, очень интересный механизм. Можно нормально разобраться, даже чайнику, если подробно перевести с английского.
И еще. Если я правильно поняла всякие обозначения в админке, то вложенность не может быть больше 10, хотя не уверена и могу ошибаться.
2 этап. Создание уровней доступа: менеджер пользователей, уровни доступа- создать – написать название, выбрать группы пользователей, которые относятся к этому уровню. Создала уд1, уд2, уд3 и уд4.
Какие группы в какой уровень включать? Тут я вообще поплыла, но подсказку нашла в реплике Просто Юзера, что надо вначале все разрешить, а потом кому надо – запретить.
И у меня получилось следующее:
в уд1 включены гр1, гр2, гр3 и гр4.
В уд2 – гр2,гр3 и гр4, т.е. все, за исключением гр1.
В уд3 – гр3 и гр4 (все, за исключение гр1 и гр2).
И уд4 – только гр4.
3 этап. Присвоение уровня доступа материалам и категориям материалов. Создаем категории и материалы как обычно. Чтобы задать им уровни доступа – надо выбрать из списка. Как выбрать уровень доступа?
Возвращаемся к примеру. Так, если мы хотим, чтобы наш материал видели все группы: гр1, гр2, гр3, и гр4, то выбираем уровень доступа – уд1. Потому что в уд1 включены все эти группы: гр1, гр2 , гр3, и гр4. И поэтому все они будут видеть этот материал.
Если мы хотим, чтобы этот материал видели только гр2, гр3 и гр4, а гр1 – чтобы не видела, то выбираем уд2. Потому что в уд2 включены гр2, гр3 и гр4. Поэтому именно они и будут видеть этот материал. А группа гр1 - не будет.
Аналогично, если мы хотим, чтобы наш материал видели только гр3 и выше, то выбираем уд3, включающий гр3 и гр4.
А если мы хотим, чтобы наш материал читали бы только гр4 и больше никто, то выбираем уд4, потому что в этот уровень включена только гр4.
4 этап. Создание меню. Все как в Joomla 1.5 – название, системное имя, сохранили. Все.
5 этап. Создание пунктов меню. Есть отличия от Joomla 1.5. В 1.5 вывод материала определялся параметрами вывода статьи. В 1.6, похоже, вывод материала определяется в первую очередь параметрами пункта меню. Пока этого не поняла – ничего не получалось. Задаю материалу уровень доступа – а он отображается, где хочет. А когда стала задавать точный уровень доступа для пунктов меню – все сразу стало на свои места.
Не знаю, как это работает для других параметров, но для уровней доступа – точно: параметры вывода пункта меню главнее, чем параметры вывода самой статьи.
Поэтому – особое внимание выбору уровня доступа для каждого пункта меню.
Тем более что в Joomla 1.6 можно настраивать уровень доступа не только для всего меню (модуля), но и для отдельного пункта меню.
Проверила неоднократно. Настройка отдельного пункта меню на определенный уровень доступа работает!
Уровень доступа для пункта меню выбираем точно так же, как и для материалов, по тому же самому принципу: если хочу, чтобы этот пункт меню видели все - присваиваю уд1, если только гр2,гр3 и гр4 - то присваиваю уд2 и т.д.
6 этап. Создание модуля для меню. В отличие от Joomla 1.5 здесь модуль для меню автоматически не создается. Его надо создать: менеджер модулей – создать – выбор типа модуля – "Меню"
Дальше – название модуля, позиция, доступ. Доступ для модуля выбираем по принципу, как для материалов, категорий и пунктов меню.
При этом одно меню можно создать для разных уровней доступа – через задание разных уровней доступа для отдельных пунктов меню.
Например. В нашем примере можно сделать одно общее меню с общим для всех уровнем доступа уд1. А в нем разные пункты меню можно сделать с разными уровнями доступа.
Например: один пункт меню будет иметь уд1, другой – уд2, третий – уд3 и четвертый - уд4. Что получится в результате? А получится вот что:
Пункт меню с уд1 будут видеть все: гр1, гр2, гр3 и гр4.
Пункт меню с уд2 – только гр2, гр3 и гр4, потому что гр1 в уд2 не включена.
Пункт меню с уд3 будет виден только гр3 и гр4, потому что гр1 и гр2 в уд3 не включены.
А пункт с уд4 будет виден только для гр4, потому что в уд4 включена только одна группа гр4.
И это все будет находится в одном и том же модуле одного и того же меню.
Привязка модуля к пунктам меню. Смотрите внимательно, чтобы модуль появлялся только на нужных страницах. Если модуль появится на тех страницах, где у пользователя нет прав на просмотр этих материалов, то на странице появится пустой модуль без пунктов меню. Потому что модуль мы к странице привязать-то привязали, но прав у пользователя на просмотр этих материалов (на просмотр этого пункта меню) нет. Вот модуль появится-то и появится, но пункты меню в нем будут не видны.
Ну и конечно, при создании модуля для меню нужно не забыть выбрать само меню в основных параметрах. В Joomla 1.5 этого не было, поэтому иногда забываешь.
7 этап. Присвоение пользователю уровня доступа. Напрямую пользователю присвоить нужный уровень доступа нельзя. Присвоение уровня доступа пользователю осуществляется через назначение пользователю одной или нескольких групп, а вот уже сами группы привязаны к уровням доступа.
Как создать пользователей – понятно. Через регистрацию или через менеджер пользователей. Как назначить нужную группу – тоже понятно: менеджер пользователей – пользователи – конкретный пользователь – поставить галочку напротив нужной группы или нужных групп.
Не забывайте, что пользователь, работающий через внешний интерфейс, обязательно должен входить или в группу «Зарегистрированные, или в группу, являющейся дочерней от «Зарегистрированных», иначе он не попадет в закрытую часть сайта.
А чтобы понять, как работает взаимосвязь «группы – уровни доступа», рассмотрим конкретные примеры.
У нас есть пользователь АА. Мы хотим дать ему право смотреть материалы только под литерой м1. Поэтому даем ему группу - гр1. Эта группа включена только в уд1. С другой стороны, материалы под литерой м1 тоже имеют уд1 и выводятся пунктом меню с уд1. Поэтому АА сможет видеть только те страницы, которые выводятся пунктами меню, имеющими уд1. Все другие материалы, точнее, пункты меню с другими уд для АА будут не видны.
Пользователь ББ. Мы хотим дать ему право смотреть только м1 и м2. Поэтому включаем его в гр2. Эта гр2 включена в уд1 и уд2. Поэтому ББ может видеть материалы, которые выводятся пунктами меню, имеющими уровень доступа как уд1, так и уд2.
Вся сложность заключается в том, чтобы правильно соотнести группы пользователей и уровни доступа. Если сходу не удается разобраться, можно порисовать разные схемки на бумаге или просто повторить то, что здесь написано. Все – не сложно, но только логика здесь как-то наоборот, не сразу ухватываешь.
Смотрим еще раз. Пользователь ВВ. Мы хотим дать ему право смотреть м1, м2, и м3. Поэтому включаем его в группу гр3. Гр3, в свою очередь, включена в уровни доступа уд1, уд2, и уд3. Поэтому ВВ может видеть все пункты меню, которым присвоены эти самые уд1, уд2, и уд3. А значит, ВВ сможет и прочитать эти самые материалы, потому что пункты меню с уд1, уд2 и уд3 выводят материалы с такими же уровнями доступа.
Пользователь ДД. Если мы хотим, чтобы пользователь ДД мог читать материалы из всех четырех категорий: м1, м2, м3 и м4, то включаем его в группу гр4. Группа гр4 в свою очередь включена в четыре уровня доступа: уд1, уд2, уд3 и уд4. Поэтому ДД сможет видеть все, что разрешено для уд1,1д2,уд3 и уд4. То есть все наши материалы и категории с литерами м1, м2, м3 и м4, потому что все они также имеют соответствующие уровни доступа.
Надеюсь, что кому-то эта информация поможет. Спасибо за внимание.