Добрий день, всім читачам блогу WebHow! Нарешті я знайшла відмінний плагін для підсвічування коду в статтях, і тепер можна зайнятися серйозними справами. Отже, жарти в сторону, сьогодні буде суворий піст для тих, хто мріє організувати на своєму MODx-сайті дошку оголошень, каталог або будь-який інший сервіс, де відвідувачі будуть самі розміщувати свій контент.
Всі, хто хоч трохи знайомий з MODx, знають, для того щоб розміщувати свій контент, у користувача повинен бути доступ до адмін.панелі. Роздавати його направо-наліво, зрозуміло, не хочеться. Тому потрібно зробити так, щоб користувачі могли створювати ресурси і завантажувати до них файли прямо зі сторінок сайту.
Я не програміст, і коли мені вперше довелося створити дошку оголошень на MODx, все що я могла - пошукати готове рішення. Різних варіантів сниппета, який би дозволив публікувати ресурс з фронтенда для MODx Revolution виявилося не мало.
Принцип у всіх приблизно один: за допомогою FormIt створюється сторінка з формою, у виклику якої прописується ім'я сниппета. Для кожного типу оголошень створюються свої TV-поля, наприклад, місто, телефон, або поле для завантаження зображень. Коли користувач відправляє форму, створюється ресурс.
Однак, практично всі сніппети, які мені вдалося знайти, були дуже громіздкими: кожен TV-параметр потрібно було прописувати в коді сниппета, а це мене не влаштовувало. Тому що для кожного виду оголошень я задумала як мінімум 3 додаткових поля, і все їх прописувати в сниппет ... немає, є спосіб краще і простіше. Він був знайдений мною на англомовній частині офіційного форуму MODx.com І якщо ви не дуже добре говорите і читаєте по англійськи або вам просто лінь шукати відповідний варіант з декількох в темі, я розповім як ним користуватися.
На цю тему я записала покрокову відео-інструкцію. Всі матеріали до неї ви знайдете трохи нижче програвача.
Код сниппета formit2resource
getObject ( "modResource", array ( "id" \u003d\u003e $ hook-\u003e getValue ( "resource_id"))); if (empty ($ doc)) ($ doc \u003d $ modx-\u003e newObject ( "modResource"); $ doc-\u003e set ( "createdby", $ modx-\u003e user-\u003e get ( "id"));) else ($ doc-\u003e set ( "editedby", $ modx-\u003e user-\u003e get ( "id"));) $ allFormFields \u003d $ hook-\u003e getValues \u200b\u200b(); foreach ($ allFormFields as $ field \u003d\u003e $ value) (if ($ field! \u003d\u003d "spam" && $ field! \u003d\u003d "resource_id") ($ doc-\u003e set ($ field, $ value);)) $ alias \u003d $ doc-\u003e cleanAlias \u200b\u200b($ fields [ "pagetitle"]); if ($ modx-\u003e getCount (modResource, array ( "alias" \u003d\u003e $ alias))! \u003d 0) ($ count \u003d 1; $ newAlias \u200b\u200b\u003d $ alias; while ($ modx-\u003e getCount (modResource, array ( " alias "\u003d\u003e $ newAlias))! \u003d 0) ($ newAlias \u200b\u200b\u003d $ alias; $ newAlias. \u003d" - ". $ count; $ count ++;) $ alias \u003d $ newAlias;) $ doc-\u003e set (" alias " , $ alias); $ Doc-\u003e set ( "template", $ template); $ Doc-\u003e save (); foreach ($ allFormFields as $ field \u003d\u003e $ value) (if (! empty ($ value) && $ tv \u003d $ modx-\u003e getObject ( "modTemplateVar", array ( "name" \u003d\u003e $ field))) (/ * handles checkboxes & multiple selects elements * / if (is_array ($ value)) ($ featureInsert \u003d array (); while (list ($ featureValue, $ featureItem) \u003d each ($ value)) ($ featureInsert \u003d $ featureItem;) $ value \u003d implode ( "||", $ featureInsert);) $ tv-\u003e setValue ($ doc-\u003e get ( "id"), $ value); $ tv-\u003e save ();)) $ modx-\u003e cacheManager -\u003e refresh (); return true;
Код сниппета formit2file
user-\u003e get ( "id"); // Path from root that user specifies // create unique path for this form submission $ uploadpath \u003d "assets / uploads /".$ mydir." / "; // get full path to unique folder $ target_path \u003d $ modx-\u003e config [ "base_path"]. $ Uploadpath; // get uploaded file names: $ submittedfiles \u003d array_keys ($ _ FILES); // loop through files foreach ($ submittedfiles as $ sf) (// Get Filename and make sure its good. $ Filename \u003d basename ($ _ FILES [$ sf] [ "name"]); // Get file "s extension $ ext \u003d pathinfo ($ filename, PATHINFO_EXTENSION); $ ext \u003d mb_strtolower ($ ext); // case insensitive // \u200b\u200bis the file name empty (no file uploaded) if ($ filename! \u003d "") (// is this the right type of file? if (in_array ($ ext, $ ext_array)) (// clean up file name and make unique $ filename \u003d $ counter. ".". $ ext; $ filename \u003d str_replace ( "", "_" , $ filename); // spaces to underscores $ filename \u003d date ( "Ym-d_G-i-s_"). $ filename; // add date & time // full path to new file $ myTarget \u003d $ 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 \u003d $ upload path. $ Filename; $ Hook-\u003e setValue ($ sf, $ myFile); // set the permissions on the file if (! Chmod ($ myTarget, 0644)) (/ * some debug function * /)) else (// File not uploaded $ errorMsg \u003d "There was a problem uploading the file."; $ hook-\u003e addError ($ sf, $ errorMsg); $ output \u003d false; // generate submission error)) else (// File type not allowed $ errorMsg \u003d "Type of file not allowed."; $ hook-\u003e addError ($ sf, $ errorMsg); $ output \u003d false; // generate submission error) // if no file, don "t error, but return blank) else ($ hook-\u003e setValue ($ sf," ");) $ counter \u003d $ counter + 1;) return $ output;
Друзі! Не забувайте підставляти в код форми ваші TV-поля і ID ваших ресурсів. Будьте уважні, і у вас все вийде.
виклик FormIt
[[! FormIt? & Hooks \u003d `formit2file, formit2resource, redirect` & redirectTo \u003d` ID сторінки з сообщеніем` & template \u003d `ID шаблону об'явленія`]]
Умова для виклику чанка з формою
[[! + Modx.user.id: is \u003d `0`: then \u003d` Для розміщення оголошення необхідна авторизація [[! Loginza? & Groups \u003d `3` & profileFields \u003d` username, email, fullname, photo`]] `: else \u003d` [[$ form_add]] `]]
Приклад коду форми
[[+ Fi.error.error_message]]
Умова для виводу зображення
[[* Img: notempty \u003d ``]]
Тепер користувачі вашого сайту можуть не тільки розміщувати оголошення, а й доповнювати їх фотографіями, як і на будь-який дошці оголошень. Але що робити, якщо під час заповнення форми була допущена помилка? Наприклад, людина опечатали і вказав невірний номер телефону, а може бути, просто захотів доповнити оголошення або змінити ціну на свій товар.
Наступного разу розповім,. А на сьогодні все, сподіваюся, ця стаття була вам корисна.
В 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-\u003e get ( "username");
Виклик сниппета на сторінці:
[[! GetUser]]
Результат праці:
(Anonymous)
Дії анонімних користувачів на сайті в MODX регулюються за допомогою настройки дозволів групи (Анонім). При необхідності ви можете цій групі дати додаткові привілеї або обмежити їх.
Типові інструкції по налаштуванню дозволів
У цьому розділі розглянемо інструкції, які можна використовувати, коли вам необхідно:
- обмежити доступ до певних ресурсів для анонімних користувачів;
- створити контент менеджера, якого Суд має надати доступ для роботи з ресурсами в адмінці, а також можливість завантажувати картинки.
Обмеження доступу до певних ресурсів
Розглянемо приклад, в якому обмежимо доступ анонімним користувачам до певних ресурсів (наприклад, до особистого кабінету, на сторінку «Зміни пароля» і т.п.). Доступ до цих ресурсів надамо тільки зареєстрованим користувачам.
Щоб це здійснити необхідно:
- створити групу ресурсів Users (Вміст -\u003e Групи ресурсів -\u003e кнопка «Створити групу ресурсів»). У формі, що з'явилася ввести в поле «Ім'я» - Users і натиснути на кнопку «Зберегти». Помістити в неї потрібні ресурси (доступ, до яких необхідно обмежити для анонімних відвідувачів).
- створити групу користувачів Users (Іконка «шестерінки» -\u003e Контроль доступу -\u003e кнопка «Нова група користувачів»). У діалоговому вікні ввести в поле «Ім'я» - Users, «Контекст» - web, «Політики бекенда» - (Немає політики).
- Перейти в режим редагування групи (в контекстному меню Users вибрати пункт «Редагувати групу користувачів»).
- Відкрити вкладку «Права доступу», а в ній «Доступ до груп ресурсів». Натиснути на кнопку «Додати групу ресурсів» і заповнити форму, що відкрилася ( «Група ресурсів» - Group, «Контекст» - (Web), Мінімальна роль - Member (9999), «Політика доступу» - Load, List and View).
Після цього, будь-який анонімний або інший користувач (у якого немає прав) отримає 404 ресурс (Тому що у нього немає навіть права load), Якщо він спробує відкрити якусь ту сторінку з цієї групи.
Якщо ж ви хочете анонімних користувачів, при відкритті захищених сторінок, пересилати на якусь іншу (наприклад, авторизації), то необхідно виконати додатково ще наступне (а саме дати право load для цієї групи ресурсів):
- відкрити системні настройки (Іконка «шестерінки» -\u003e Системні налаштування). Вибрати простір імен «core», розділ «Сайт». знайти параметр unauthorized_page (Сторінка помилки 403 «Доступ заборонений») і вказати йому в якості значення - id ресурсу, Що містить форму «Авторизации».
- Перейти в режим редагування групи (Анонім). У розділі «Доступ до груп ресурсів» (вкладка «Права доступу») додати групу ресурсів Users і виставити їй необхідні права (в даному випадку «Контекст» - (Web), Мінімальна роль - Member (9999), «Політика доступу» - Load Only).
Налаштування прав для контент менеджера
У цьому прикладі створимо групу «Managers», користувачі якої зможуть в адмінці завантажувати зображення в директорію і працювати з певними ресурсами.
Щоб це здійснити можна, наприклад, скористатися наступною інструкцією:
1. Створити нову політику доступу Manager з необхідними правами:
- Відкрити сторінку у «Контроль доступу» (іконка «шестерінки» -\u003e Контроль доступу) і перейти на вкладку «Політика доступу».
- Зробити копію політики «Content Editor».
- Відредагувати створену копію, а саме змінити поле ім'я на Manager і встановити галочки навпроти прав directory_list, file_list, file_manager, file_remove, file_tree, file_upload. У підсумку політика доступу Manager матиме 30 дозволів. Це необхідно зробити для того, щоб користувачеві надати права для роботи з файлами.
- Натиснути на кнопку «Зберегти».
2. Приховати ресурси, до яких менеджери не повинні мати доступ в адмінці:
- Відкрити сторінку у «Групи ресурсів» і натиснути на кнопку «Створити групу ресурсів».
- У формі ввести в «Ім'я» - ClosedForManagers, «Контекст» - mgr і відзначити опцію «Автоматично дати доступ групі Administrator».
- Клікнути на кнопку «Зберегти».
- Перетягнути в створену групу ресурси, які необхідно приховати для менеджерів в адмінці.
3. Надати доступ до директорії, в яку користувач буде завантажувати картинки.
- Відкрити сторінку у «Джерела файлів», клікнути на кнопку «Створити нове джерело файлів».
- У формі ввести в поле «Ім'я» текст Images, В «Опис» - зображення, В «Тип джерела файлів» - файлова система.
- Натиснути на кнопку «Зберегти».
- Відредагувати щойно створений джерело файлів (права кнопка миші -\u003e дія «Редагувати»).
- Змінити значення параметрів: basePath - assets / images /, BaseUrl - assets / images /, AllowedFileTypes - jpg, jpeg, png, gif.
- Клікнути на кнопку «Зберегти».
Джерело файлів, що не має пов'язаної з ним групи користувачів, буде доступний всім користувачем бекенда. Тому щоб для користувачів групи Managers не з'являлися інші джерела файлів, які не пов'язані ні з однієї групи, їх, наприклад, можна додати їх до групи користувачів Administrator.
MODX - Скріплення джерела файлів Filesystem з групою Administrator
Система розмежування доступу MODX за допомогою джерела файлів дозволяє різним користувачам задати певні каталоги, до яких вони матимуть доступ, а також визначити набір їх привілеїв в них. Іншими словами - це система, яка за допомогою якої, наприклад, одним користувачам можна дати одні каталоги, а іншим - інші.
4. Створити нову групу користувачів і призначити їй необхідні права.
- Відкрити сторінку у «Контроль доступу», перейти на вкладку «Групи користувачів & Користувачі», натиснути на кнопку «Створити нову групу користувачів».
- У діалоговому вікні заповнити наступні поля: «Ім'я» - Managers; «Опис» - Менеджери; «Контекст» - web, mgr; «Політика бекенда» - Manager.
- Натиснути на кнопку «Зберегти».
- Перейти в режим редагування щойно створеної групи користувачів «Managers» (натиснути правою кнопкою миші на групі -\u003e пункт в контекстному меню «Редагувати»).
- Перейти на вкладку «Права доступу».
- Відкрити розділ «Доступ до контекстам». доступ контексту web: «Мінімальна роль» - Member (9999); Політика доступу - Load, List and View. Доступ до контексту mgr: «Мінімальна роль» - Member (9999), Політика доступу - Manager.
- У розділі «Доступ до джерела файлів» додамо новий запис, що має наступні значення: «Джерело» - Images; «Мінімальна роль» - Member (9999), «Політика доступу» - Media Source Admin.
- Натиснути на кнопку «Зберегти»
5. Створити користувача і додати його в групу «Manager». Як значення ролі встановити йому число 9999 (Member). Даною ролі йому буде досить, щоб отримати всі дозволи даної групи. Це пов'язано з тим, що для цієї групи ми не призначали політики доступу для яких треба було б роль більше ніж 9999.
Додавання користувача до групи Manager (роль Member)
В 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. Про всяк випадок очищаємо кеш
і наш користувач з обмеженими правами і доступами до файлової системи створений!
Не скажу, що це досить легко, але якщо робити це на автоматизм, то це не здасться чимось важким. Сподіваюся у вас все вийшло! Удачі в проектах!