В Evolution все было достаточно просто: создаешь права пользователю и готово! А здесь нужно проделать достаточно много шагов, но сдругой стороны - в Modx Revolution с правами на документы и файлы можно делать все, что угодно (если конечно разбираться в этом). Ну что ж, начнем!
1. Переходим в "Безопасность" - "Контроль доступа" в верхнем меню админ-панели
2. Заходим во вкладку "Политика доступа"
3. Нажимаем на кнопку "Создать политику доступа"
У нас откроется окно с полями. В поле Имя пишем "manager", шаблон политики доступа - AdministratorTemplate. Жмем кнопку сохранить
4. После сохранения политики доступа "manager" мы видим, что она появилась у нас в списке политик доступа
5. Редактируем manager
6. Убираем галочки ненужных параметров
Внизу этой открывшейся страницы есть список параметров (разрешений). Нам нужно убрать галочки с тех параметров, которые отвечают за вывод каких либо ресурсов в админке, чтобы избежать редактирования или удаления нужных документов, файлов, элементов для правильной работы сайта.
Убираем галочки со следующих параметров:
- access_permissions Вывод страницы с настройками прав доступов пользователей
- dashboards Просмотр и управление панелями
- element_tree Возможность просмотра дерева элементов в левой навигационной панели
- menu_reports Показывать в верхнем меню пункт «Отчёты»
- menu_security Показывать в верхнем меню пункт «Безопасность»
- menu_system Показывать в верхнем меню пункт «Система»
- menu_tools Показывать в верхнем меню пункт «Инструменты»
- new_static_resource Создавать новые статичные ресурсы.
- remove_locks Удалять все блокировки на сайте
7. Переходим во вкладку "Безопасность" - "Контроль доступа" - "Роли"
8. Нажимаем кнопку "Создать новый", в поле Имя вбиваем Manager, Ранг - 9, нажимаем кнопку "Сохранить"
9. Сохраняем изменения и переходим в меню "Безопасность" - "Контроль доступа" - "Группы пользователей"
Правой кнопкой мыши жмем на "Administrator" и нажимаем "Создать группу пользователей"
10. Создаем новую группу: Имя - Manager, Политика бэкэнда - нет политики, жмем "Сохранить"
11. Находим ее в списке Групп пользователей и жмем "редактировать"
12. Заходим в меню "Доступ к контекстам" и нажимаем "Добавить контекст"
13. Контекст - mgr, Минимальная роль - Manager - 9, Политика доступа - Manager
14. Добавляем еще одни контекст
А точнее редактируем уже имеющийся web: Контекст - web, Минимальная роль - Manager - 9, Политика доступа - Administrator. Нажимаем кнопку "Сохранить"
15. Мы увидим такую картину! Сохраняем все во вкладке "Группа пользователя: Manager"
16. Далее: "Безопасность" - "Управление пользователями"
17. Создаем нового пользователя (это будет наш клиент) - нажимаем кнопку "Новый пользователь".
Имя вы ему можете задать какое угодно, я назову его - manager
18. Имя пользователя - manager, жмем галочку - Активный, вбиваем email
19. Указываем пароль
20. Перед тем как сохранить, зайдите во вкладку "Права доступа"
21. Жмем кнопку "Добавить пользователя в группу", Группа пользователя - "Manager", Роль - "Manager"
Сохраняем. На этом создание админ панели, где у клиента есть доступы только к правке и созданию страниц в дереве документов, закончено. Но этот пользователь до сих пор имеет доступ ко всем файлам системы. И поэтому мы сейчас сделаем так, чтобы он имел доступ только к одной папке, которую мы создадим в корне сайта Modx Revolution
22. Переходим во вкладку "Инструменты" - "Источники файлов"
23. Откроется список всех источников файлов. По умолчанию создан одни единственный - Filesystem
Перед созданием нового источника файлов, нужно сначала изменить этот. Нажимаем на "Filesystem " правой кнопкой мыши и выбираем "Редактировать"
24. Откроется такое окно. Жмем "Добавить группу пользователей"
25. Группы пользователей - Administrator, Минимальная роль - Super User - 0, Политика - Media Source Admin. Нажимаем "Сохранить"
26. Возвращаемся к Источникам файлов и создаем новый источник файлов
Назовем его "Manager", Тим источника файлов - Файловая система
27. Нажимаем правой кнопкой мыши на новый источник файлов "Manager" и выбираем "Редактировать"
28. Откроется такое окно! Нам нужно изменить первые 4 параметра
В basePath в поле значение мы вбиваем /manager/ , basePathRelative и baseUrlRelative оставляем как есть со значениями "Да", в поле baseUrl пишем manager/
29. Заходим в tv параметр
30. Нажимаем самую последнюю вкладку "Источники файлов"
и меняем источник файлов с "Filesystem" на "Manager". Сохраняем!
31. Добавляем группу пользователей в "Manager"
Теперь после всех проделанных шагов заходим в "Источник файлов" - "Manager" и добавляем группу пользователей в этот источник файлов
32. Группы пользователей - Manager, Минимальная роль - Manager - 9, Политика - Media Source Admin. Жмем "Сохранить"
Сразу после сохранения источник файлов "Manager" исчезнет для администратора. Для того чтобы можно было редактировать этот источник файлов, нужно зайти в меню "Безопасность - Контроль доступа". Открыть на редактирование группу менеджера: Manager и во вкладке "Источники файлов" найти и удалить источник Manager . Только тогда мы сможем вновь редактировать данный источник из под администратора.
33. На всякий случай очищаем кэш
и наш пользователь с ограниченными правами и доступами к файловой системе создан!
Не скажу, что это достаточно легко, но если делать это на автоматизме, то это не покажется чем то тяжелым. Надеюсь у вас все получилось! Удачи в проектах!
Добрый день, всем читателям блога WebHow! Наконец-то я нашла отличный плагин для подсветки кода в статьях, и теперь можно заняться серьезными делами. Итак, шутки в сторону, сегодня будет суровый пост для тех, кто мечтает организовать на своем MODx-сайте доску объявлений, каталог или любой другой сервис, где посетители будут сами размещать свой контент.
Все, кто хоть немного знаком с MODx, знают, для того чтобы размещать свой контент, у пользователя должен быть доступ к админ.панели. Раздавать его направо-налево, разумеется, не хочется. Поэтому нужно сделать так, чтобы пользователи могли создавать ресурсы и загружать к ним файлы прямо со страниц сайта.
Я не программист, и когда мне впервые пришлось создать доску объявлений на MODx, все что я могла — поискать готовое решение. Различных вариантов сниппета, который бы позволил публиковать ресурс с фронтенда для MODx Revolution оказалось не мало.
Принцип у всех примерно один: при помощи FormIt создается страница с формой, в вызове которой прописывается имя сниппета. Для каждого типа объявлений создаются свои TV-поля, например, город, телефон, или поле для загрузки изображений. Когда пользователь отправляет форму, создается ресурс.
Однако, практически все сниппеты, которые мне удалось найти, были очень громоздкими: каждый TV-параметр нужно было прописывать в коде сниппета, а это меня не устраивало. Потому что для каждого вида объявлений я задумала как минимум 3 дополнительных поля, и все их прописывать в сниппет… нет, есть способ лучше и проще. Он был найден мною на англоязычной части официального форума MODx.com И если вы не очень хорошо говорите и читаете по английски или вам просто лень искать подходящий вариант из нескольких в теме, я расскажу как им пользоваться.
На эту тему я записала пошаговую видео-инструкцию. Все материалы к ней вы найдете чуть ниже проигрывателя.
Код сниппета formit2resource
getObject("modResource",array("id"=>$hook->getValue("resource_id"))); if (empty($doc)){ $doc = $modx->newObject("modResource"); $doc->set("createdby", $modx->user->get("id")); } else{ $doc->set("editedby", $modx->user->get("id")); } $allFormFields = $hook->getValues(); foreach ($allFormFields as $field=>$value) { if ($field !== "spam" && $field !== "resource_id"){ $doc->set($field, $value); } } $alias = $doc->cleanAlias($fields["pagetitle"]); if($modx->getCount(modResource, array("alias"=>$alias))!= 0) { $count = 1; $newAlias = $alias; while($modx->getCount(modResource, array("alias"=>$newAlias))!= 0) { $newAlias = $alias; $newAlias .= "-" . $count; $count++; } $alias = $newAlias; } $doc->set("alias",$alias); $doc->set("template", $template); $doc->save(); foreach ($allFormFields as $field=>$value) { if (!empty($value) && $tv = $modx->getObject("modTemplateVar", array ("name"=>$field))) { /* handles checkboxes & multiple selects elements */ if (is_array($value)) { $featureInsert = array(); while (list($featureValue, $featureItem) = each($value)) { $featureInsert = $featureItem; } $value = implode("||",$featureInsert); } $tv->setValue($doc->get("id"), $value); $tv->save(); } } $modx->cacheManager->refresh(); return true;
Код сниппета formit2file
user->get("id"); // Path from root that user specifies // create unique path for this form submission $uploadpath = "assets/uploads/".$mydir."/"; // get full path to unique folder $target_path = $modx->config["base_path"] . $uploadpath; // get uploaded file names: $submittedfiles = array_keys($_FILES); // loop through files foreach ($submittedfiles as $sf) { // Get Filename and make sure its good. $filename = basename($_FILES[$sf]["name"]); // Get file"s extension $ext = pathinfo($filename, PATHINFO_EXTENSION); $ext = mb_strtolower($ext); // case insensitive // is the file name empty (no file uploaded) if($filename != "") { // is this the right type of file? if(in_array($ext, $ext_array)) { // clean up file name and make unique $filename = $counter . "." . $ext; $filename = str_replace(" ", "_", $filename); // spaces to underscores $filename = date("Y-m-d_G-i-s_") . $filename; // add date & time // full path to new file $myTarget = $target_path . $filename; // create directory to move file into if it doesn"t exist mkdir($target_path, 0755, true); // is the file moved to the proper folder successfully? if(move_uploaded_file($_FILES[$sf]["tmp_name"], $myTarget)) { // set a new placeholder with the new full path (if you need it in subsequent hooks) $myFile = $uploadpath . $filename; $hook->setValue($sf,$myFile); // set the permissions on the file if (!chmod($myTarget, 0644)) { /*some debug function*/ } } else { // File not uploaded $errorMsg = "There was a problem uploading the file."; $hook->addError($sf, $errorMsg); $output = false; // generate submission error } } else { // File type not allowed $errorMsg = "Type of file not allowed."; $hook->addError($sf, $errorMsg); $output = false; // generate submission error } // if no file, don"t error, but return blank } else { $hook->setValue($sf, ""); } $counter = $counter + 1; } return $output;
Друзья! Не забывайте подставлять в код формы ваши TV-поля и ID ваших ресурсов. Будьте внимательны, и у вас все получится.
Вызов FormIt
[[!FormIt? &hooks=`formit2file,formit2resource,redirect` &redirectTo=`ID страницы с сообщением` &template=`ID шаблона объявления` ]]
Условие для вызова чанка с формой
[[!+modx.user.id:is=`0`:then=`Для размещения объявления необходима авторизация [[!Loginza? &groups=`3` &profileFields=`username,email,fullname,photo`]]`:else=`[[$form_add]]`]]
Пример кода формы
[[+fi.error.error_message]]
Условие для вывода изображения
[[*img:notempty=``]]
Теперь пользователи вашего сайта могут не только размещать объявления, но и дополнять их фотографиями, как и на любой доске объявлений. Но что делать, если во время заполнения формы была допущена ошибка? Например, человек опечатался и указал неверный номер телефона, а может быть, просто захотел дополнить объявление или изменить цену на свой товар.
В следующий раз расскажу, . А на сегодня все, надеюсь, эта статья была вам полезна.
В Evolution все было достаточно просто: создаешь права пользователю и готово! А здесь нужно проделать достаточно много шагов, но сдругой стороны - в Modx Revolution с правами на документы и файлы можно делать все, что угодно (если конечно разбираться в этом). Ну что ж, начнем!
1. Переходим в "Безопасность" - "Контроль доступа" в верхнем меню админ-панели
2. Заходим во вкладку "Политика доступа"
3. Нажимаем на кнопку "Создать политику доступа"
У нас откроется окно с полями. В поле Имя пишем "manager", шаблон политики доступа - AdministratorTemplate. Жмем кнопку сохранить
4. После сохранения политики доступа "manager" мы видим, что она появилась у нас в списке политик доступа
5. Редактируем manager
6. Убираем галочки ненужных параметров
Внизу этой открывшейся страницы есть список параметров (разрешений). Нам нужно убрать галочки с тех параметров, которые отвечают за вывод каких либо ресурсов в админке, чтобы избежать редактирования или удаления нужных документов, файлов, элементов для правильной работы сайта.
Убираем галочки со следующих параметров:
- access_permissions Вывод страницы с настройками прав доступов пользователей
- dashboards Просмотр и управление панелями
- element_tree Возможность просмотра дерева элементов в левой навигационной панели
- menu_reports Показывать в верхнем меню пункт «Отчёты»
- menu_security Показывать в верхнем меню пункт «Безопасность»
- menu_system Показывать в верхнем меню пункт «Система»
- menu_tools Показывать в верхнем меню пункт «Инструменты»
- new_static_resource Создавать новые статичные ресурсы.
- remove_locks Удалять все блокировки на сайте
7. Переходим во вкладку "Безопасность" - "Контроль доступа" - "Роли"
8. Нажимаем кнопку "Создать новый", в поле Имя вбиваем Manager, Ранг - 9, нажимаем кнопку "Сохранить"
9. Сохраняем изменения и переходим в меню "Безопасность" - "Контроль доступа" - "Группы пользователей"
Правой кнопкой мыши жмем на "Administrator" и нажимаем "Создать группу пользователей"
10. Создаем новую группу: Имя - Manager, Политика бэкэнда - нет политики, жмем "Сохранить"
11. Находим ее в списке Групп пользователей и жмем "редактировать"
12. Заходим в меню "Доступ к контекстам" и нажимаем "Добавить контекст"
13. Контекст - mgr, Минимальная роль - Manager - 9, Политика доступа - Manager
14. Добавляем еще одни контекст
А точнее редактируем уже имеющийся web: Контекст - web, Минимальная роль - Manager - 9, Политика доступа - Administrator. Нажимаем кнопку "Сохранить"
15. Мы увидим такую картину! Сохраняем все во вкладке "Группа пользователя: Manager"
16. Далее: "Безопасность" - "Управление пользователями"
17. Создаем нового пользователя (это будет наш клиент) - нажимаем кнопку "Новый пользователь".
Имя вы ему можете задать какое угодно, я назову его - manager
18. Имя пользователя - manager, жмем галочку - Активный, вбиваем email
19. Указываем пароль
20. Перед тем как сохранить, зайдите во вкладку "Права доступа"
21. Жмем кнопку "Добавить пользователя в группу", Группа пользователя - "Manager", Роль - "Manager"
Сохраняем. На этом создание админ панели, где у клиента есть доступы только к правке и созданию страниц в дереве документов, закончено. Но этот пользователь до сих пор имеет доступ ко всем файлам системы. И поэтому мы сейчас сделаем так, чтобы он имел доступ только к одной папке, которую мы создадим в корне сайта Modx Revolution
22. Переходим во вкладку "Инструменты" - "Источники файлов"
23. Откроется список всех источников файлов. По умолчанию создан одни единственный - Filesystem
Перед созданием нового источника файлов, нужно сначала изменить этот. Нажимаем на "Filesystem " правой кнопкой мыши и выбираем "Редактировать"
24. Откроется такое окно. Жмем "Добавить группу пользователей"
25. Группы пользователей - Administrator, Минимальная роль - Super User - 0, Политика - Media Source Admin. Нажимаем "Сохранить"
26. Возвращаемся к Источникам файлов и создаем новый источник файлов
Назовем его "Manager", Тим источника файлов - Файловая система
27. Нажимаем правой кнопкой мыши на новый источник файлов "Manager" и выбираем "Редактировать"
28. Откроется такое окно! Нам нужно изменить первые 4 параметра
В basePath в поле значение мы вбиваем /manager/ , basePathRelative и baseUrlRelative оставляем как есть со значениями "Да", в поле baseUrl пишем manager/
29. Заходим в tv параметр
30. Нажимаем самую последнюю вкладку "Источники файлов"
и меняем источник файлов с "Filesystem" на "Manager". Сохраняем!
31. Добавляем группу пользователей в "Manager"
Теперь после всех проделанных шагов заходим в "Источник файлов" - "Manager" и добавляем группу пользователей в этот источник файлов
32. Группы пользователей - Manager, Минимальная роль - Manager - 9, Политика - Media Source Admin. Жмем "Сохранить"
Сразу после сохранения источник файлов "Manager" исчезнет для администратора. Для того чтобы можно было редактировать этот источник файлов, нужно зайти в меню "Безопасность - Контроль доступа". Открыть на редактирование группу менеджера: Manager и во вкладке "Источники файлов" найти и удалить источник Manager . Только тогда мы сможем вновь редактировать данный источник из под администратора.
33. На всякий случай очищаем кэш
и наш пользователь с ограниченными правами и доступами к файловой системе создан!
Не скажу, что это достаточно легко, но если делать это на автоматизме, то это не покажется чем то тяжелым. Надеюсь у вас все получилось! Удачи в проектах!
Статья, в которой рассмотрим, как в MODX Revolution организована система прав доступа, а также некоторые типовые инструкции по настройки разрешений для пользователей.
Система прав доступа в MODX
MODX Revolution не позволяет напрямую назначать права пользователю. В этой системе данное действие осуществляется через группы пользователей .
Другими словами, для того чтобы пользователю предоставить некоторые права, необходимо:
- создать группу и назначить ей нужные привилегии;
- поместить одного или нескольких пользователей в эту группу.
Но нахождения пользователя в группе не означает то, что он получит все её привилегии. Права, которые получит пользователь, будут определяться с помощью отведённой ему в этой группе роли. Роль (ранг) пользователя в группе определяется с помощью числа от 0 до 9999. Это значение определяет, какие пользователь получит привилегии группы, а какие нет.
Другими словами роль – это некий механизм, который позволяет в пределах одной группы разным пользователям назначить разные права.
Разберём небольшой пример.
В этом примере:
- Пользователь User1 принадлежит к группе Group1 . Он имеет те привилегии группы, роль которых больше 2000 .
- Пользователь User2 состоит в 2 группах. Он имеет привилегии 2 групп. От первой группы (Group1 ) он имеет те привилегии, роль которых больше или равно 1000 . А от второй (Group2 ) - те привилегии, роль которых больше или равно 9999 .
- Пользователь User3 находится в группе Group2 . Эта группа даёт ему те права, роль которых больше или равно 5000 .
Политика доступа в MODX
Установление привилегий группе в MODX Revolution осуществляется с помощью политики доступа . Она (политика доступа) назначаются группе применительно к определённым сущностям MODX, а именно к контексту, группе ресурсов, категории элементов, источнику файлов и пространству имён. Кроме этого указывается ещё минимальная роль , которая нужна пользователю этой группы, чтобы иметь эти привилегии.
Рассмотрим изображение.
Привилегии, которые получают пользователи группы, в зависимости от того, какую роль каждый из них играет в ней
В этом примере:
- Пользователь User1 (роль в группе Group1 - 2000 ) имеет все привилегии группы Group1 , роль которых больше или равно 2000. Т.е. это К1 , К2 и Г2 .
- Пользователь User2 имеет самую высокую роль в группе (0) и, следовательно, все её привилегии (К1 , К2 , Г1 и Г2 ).
- Пользователь User3 имеет в группе Group1 самую низкую роль (9999 ). В соответствии с ней он может совершать действия в системе, определённые в К2 и Г2 .
Политика доступа – это набор прав, предоставляемый пользователю для совершения действий на сайте, работающем под управлением CMS MODX Revolution.
Почему это реализовано именно так? Это связано с тем, что прав в MODX очень много и их более удобно назначать группами (другими словами с помощью политики доступа), а не по одному.
Например, политика доступа Load, List and View имеет следующий набор разрешений:
- load (загружать объекты);
- list (получать коллекцию объектов);
- view (просмотр объектов).
Как создать свою политику доступа
При установке разрешений группе пользователей вы не ограничены только существующими (предустановленными) в системе MODX политиками. При необходимости вы можете создать новые. Создание политики в MODX осуществляется на основании шаблона политики доступа . Шаблон политики доступа – это сущность MODX Revolution, которая определяет максимальный список разрешений, доступный при создании политики доступа.
Таким образом, для того чтобы создать политику доступа с нужными разрешениями необходимо:
- Найти подходящий шаблон политики доступа (при необходимости отредактировать существующий или создать новый).
- Создать политику доступа, выбрав подходящий шаблон.
- Включить из всего списка разрешений, предлагаемый шаблоном, только те, которые вы хотите предоставить пользователям (если они будут иметь эту политику).
При создании политики доступа, всегда начинайте с назначения минимального количества прав, достаточных пользователю для совершения определённых действий в системе. При необходимости вы всегда сможете расширить предоставляемые пользователю разрешения.
Анонимный пользователь
В MODX Revolution любой не авторизированный посетитель сайта является анонимным и принадлежит к группе (аноним) . В этом легко убедится, если создать следующий сниппет, поместить его вызов в шаблон ресурса, а затем открыть страницу.
Php код сниппета GetUser:
user->get("username");
Вызов сниппета на странице:
[[!GetUser]]
Результат работы:
(anonymous)
Действия анонимных пользователей на сайте в MODX регулируются посредством настройки разрешений группы (аноним) . При необходимости вы можете этой группе дать дополнительные привилегии или ограничить их.
Типовые инструкции по настройке разрешений
В этом разделе рассмотрим инструкции, которые можно использовать, когда вам необходимо:
- ограничить доступ к определённым ресурсам для анонимных пользователей;
- создать контент менеджера, которому необходимо дать доступ для работы с ресурсами в админке, а также возможность загружать картинки.
Ограничение доступа к определённым ресурсам
Рассмотрим пример, в котором ограничим доступ анонимным пользователям к определённым ресурсам (например, к личному кабинету, к странице «Изменения пароля» и т.п.). Доступ к этим ресурсам предоставим только зарегистрированным пользователям.
Чтобы это осуществить необходимо:
- Создать группу ресурсов Users (Содержимое -> Группы ресурсов -> кнопка «Создать группу ресурсов»). В появившейся форме ввести в поле «Имя» - Users и нажать на кнопку «Сохранить». Поместить в неё нужные ресурсы (доступ, к которым необходимо ограничить для анонимных посетителей).
- Создать группу пользователей Users (Иконка «Шестерёнка» -> Контроль доступа -> кнопка «Новая группа пользователей»). В открывшемся диалоговом окне ввести в поле «Имя» - Users , «Контексты» - web , «Политики бэкэнда» - (нет политики) .
- Перейти в режим редактирования группы (в контекстном меню Users выбрать пункт «Редактировать группу пользователей»).
- Открыть вкладку «Права доступа», а в ней «Доступ к группам ресурсам». Нажать на кнопку «Добавить группу ресурсов» и заполнить открывшуюся форму («Группа ресурсов» - Group , «Контекст» - (web) , Минимальная роль – Member (9999) , «Политика доступа» – Load, List and View ).
После этого, любой анонимный или другой пользователь (у которого нет прав) получит 404 ресурс (т.к. у него нет даже права load ), если он попытается открыть какую-ту страницу из этой группы.
Если же вы хотите анонимных пользователей, при открытии защищённых страниц, пересылать на какую-то другую (например, авторизации), то необходимо выполнить дополнительно ещё следующее (а именно дать право load для этой группы ресурсов):
- Открыть системные настройки (иконка «Шестерёнка» -> Системные настройки). Выбрать пространство имён «core», раздел «Сайт». Найти параметр unauthorized_page (Страница ошибки 403 «Доступ запрещен») и указать ему в качестве значение - id ресурса , содержащего форму «Авторизации».
- Перейти в режим редактирования группы (аноним) . В разделе «Доступ к группам ресурсам» (вкладка «Права доступа») добавить группу ресурсов Users и выставить ей необходимые права (в данном случае «Контекст» - (web) , Минимальная роль – Member (9999) , «Политика доступа» – Load Only ).
Настройка прав для контент менеджера
В этом примере создадим группу «Managers», пользователи которой смогут в админке загружать изображения в директорию и работать с определёнными ресурсами.
Чтобы это осуществить можно, например, воспользоваться следующей инструкцией:
1. Создать новую политику доступа Manager с необходимыми правами:
- Открыть страницу «Контроль доступа» (иконка «Шестерёнка» -> Контроль доступа) и перейти на вкладку «Политика доступа».
- Сделать копию политики «Content Editor».
- Отредактировать созданную копию, а именно изменить поле имя на Manager и установить галочки напротив прав directory_list, file_list, file_manager, file_remove, file_tree, file_upload. В итоге политика доступа Manager будет иметь 30 разрешений. Это необходимо сделать для того, чтобы пользователю предоставить права для работы с файлами.
- Нажать на кнопку «Сохранить».
2. Скрыть ресурсы, к которым менеджеры не должны иметь доступ в админке:
- Открыть страницу «Группы ресурсов» и нажать на кнопку «Создать группу ресурсов».
- В открывшейся форме ввести в «Имя» - ClosedForManagers , «Контексты» - mgr и отметить опцию «Автоматически дать доступ группе Administrator».
- Кликнуть на кнопку «Сохранить».
- Перетащить в созданную группу ресурсы, которые необходимо скрыть для менеджеров в админке.
3. Предоставить доступ к директории, в которую пользователь будет загружать картинки.
- Открыть страницу «Источники файлов», кликнуть по кнопке «Создать новый источник файлов».
- В открывшейся форме ввести в поле «Имя» текст Images , в «Описание» - Изображения , в «Тип источника файлов» - Файловая система .
- Нажать на кнопку «Сохранить».
- Отредактировать только что созданный источник файлов (правая кнопка мыши -> действие «Редактировать»).
- Изменить значение параметров: basePath – assets/images/ , baseUrl – assets/images/ , allowedFileTypes - jpg, jpeg, png, gif .
- Кликнуть по кнопке «Сохранить».
Источник файлов, не имеющий связанной с ним группы пользователей, будет доступен всем пользователем бэкэнда. Поэтому чтобы для пользователей группы Managers не показывались другие источники файлов, которые не связаны не с одной группы, их, например, можно назначить группе пользователей Administrator.
MODX - Связывание источника файлов Filesystem с группой Administrator
Система разграничения доступа MODX при помощи источника файлов позволяет различным пользователям задать определённые каталоги, к которым они будут иметь доступ, а также определить набор их привилегий в них. Другими словами - это система, которая с помощью которой, например, одним пользователям можно дать одни каталоги, а другим - другие.
4. Создать новую группу пользователей и назначить ей необходимые права.
- Открыть страницу «Контроль доступа», перейти на вкладку «Группы пользователей & Пользователи», нажать на кнопку «Новая группа пользователей».
- В открывшемся диалоговом окне заполнить следующие поля: «Имя» - Managers ; «Описание» - Менеджеры ; «Контексты» - web, mgr ; «Политика бэкэнда» - Manager .
- Нажать на кнопку «Сохранить».
- Перейти в режим редактирования только что созданной группы пользователей «Managers» (нажать правой кнопкой мыши на группе -> пункт в контекстном меню «Редактировать»).
- Перейти на вкладку «Права доступа».
- Открыть раздел «Доступ к контекстам». Доступ контексту web : «Минимальная роль» - Member (9999) ; Политика доступа – Load, List and View . Доступ к контексту mgr : «Минимальная роль» - Member (9999) , Политика доступа – Manager .
- В разделе «Доступ к источнику файлов» добавим новую запись, имеющую следующие значения: «Источник» - Images ; «Минимальная роль» - Member (9999) , «Политика доступа» – Media Source Admin .
- Нажать на кнопку «Сохранить»
5. Создать пользователя и добавить его в группу «Manager». В качестве значения роли установить ему число 9999 (Member). Данной роли ему будет достаточно, чтобы получить все разрешения данной группы. Это связано с тем, что для этой группы мы не назначали политики доступа для которых потребовалось бы роль больше чем 9999.
Добавление пользователя в группу Manager (роль Member)