Включение редактирования прав гостей в администраторской

3629
В этот знаменательный день (1 сентября) карма пересекла величину порога, позволяющая создать блог на сайте InstantCMS (ICMS2), поэтому решено зафиксировать данное событие публикацией первого поста.

Т.к. информация для публикации не была подготовленна к данной дате, поэтому решено продублировать материал, опубликованный на форуме.

Материал носит ознакомительный характер и предназначен в первую очередь для разработчиков дополнений ICMS2 в которых неоходимо манипулирование правилами группы "Гостей".

Выполним простейшие действия:
1. Найдем файл system\controllers\admin\actions\users.php;
2. Заменим строку 15
Код PHP:
  1. $groups = $users_model->getGroups();
на
Код PHP:
  1. $groups = $users_model->getGroups(true);
3. Переходим в администраторскую, выбираем в меню "Пользователи" и убеждаемся, что появилась группа "Гости" (рисунок 1).

Рисунок 1

4.Аналогичные действия выполняем в файлах:
system\core\backend.php (строки 86, 108)
system\controllers\admin\actions\ctypes_perms.php (строка 20)
system\controllers\admin\actions\ctypes_perms_save.php (строка 14)
В результате имеем:

Рисунок 2. Компонент


Рисунок 3. Контент

5. Редактируем правила доступа на свой вкус.
Комментарии (29)
Evanescence 1 сентября 2014 в 18:37 +6
Всё так просто?)
Тайны двойки раскрываются hoho
Aryuts 1 сентября 2014 в 19:07 +4
"Тайны мадридского двора" rofl
А.Саган 1 сентября 2014 в 18:58 +3
А есть ли возможность, с помощью предложенных манипуляций, закрыть гостям просмотр "вообще всего"?
Чтобы гости могли видеть только некий приветственный текст и возможность войти или зарегистрироваться.
А иначе для чего все эти городушки?
Aryuts 1 сентября 2014 в 19:00 +5
Если немного пошаманить, то да.
А.Саган 1 сентября 2014 в 19:45 +4
На мой взгляд, это очень важная и необходимая функция - уровень доступа к контенту по группам, в том числе и группы Гости.
Для начала, было бы не плохо закрыть от них комментарии...
Aryuts 1 сентября 2014 в 20:17 +4
Я с Вами согласен, что правило скрытия контента очень необходимо. К сожалению разработчики не всесильны (в сутках 24 часа). Со многим в двойке пока не разобрался, а что знаю, то пишу на форуме, а теперь и здесь.
SpaceSel 1 сентября 2014 в 20:15 +5
Отлично!
PS: Поздравляю с открытием блоГа.
Aryuts 1 сентября 2014 в 20:18 +4
Благодарствую. Надеюсь будет полезен всем.
HostelB 2 сентября 2014 в 14:31 0
Ломал голову достаточно долго над этим вопросом в итоге решил использовать SVкаммент - по функционалу он меня устраивает.

http://n-11.ru/message/m106.htmlhttp://n-11.ru/message/m106.html

В данный момент прикручиваю его к профилям. Если кому интересно - опишу в блоге всё подробно
Aryuts 2 сентября 2014 в 14:58 +1
Что за вопрос? Конечно напишите, а все Вам спасибо скажут.
СергейП 2 сентября 2014 в 14:51 +4
Поздравляю со стартом v и плюсую за 1 статью в новом блоге smile
Aryuts 2 сентября 2014 в 16:59 +1
Премного благодарен.
jorgovich 8 сентября 2014 в 12:03 +2
Здравствуйте, а сами проверяли изменения у Вас работают?
У меня при всех этих действиях практического эффекта 0, галочки да можно ставить но ни на что они не влияют...
Порядок действий такой: провел все манипуляции описанные у Вас, создал свой тип контента otzyvi, добавил галочки в настройках группы Гости на создание записи в этом типе контента, в самом типе контента указал что гости имеют права на создание записи, выхожу из системы набираю адрес site.ru/otzyvi/add - выдает 404...
Что не так может быть?
Андрей 8 сентября 2014 в 23:50 +2
Aryuts:
5. Редактируем правила доступа на свой вкус.
Видимо для автора этого достаточно. Будем любоваться на галочки в админке.
Вообще-то нужно ещё как создать в БД (таблица "users") юзера с ID=0. Потом открыть "/var/www/icms/system/core/user.php" и после строки 109
там где заканчивается условие
Код PHP:
  1. if ($this->id){
добавить:
Код PHP:
  1. else{
  2. $this->perms = self::getPermissions(array(GUEST_GROUP_ID),GUEST_GROUP_ID);
  3. $this->karma = 0;
  4. }
После этого вроде работает, но за безопасность не ручаюсь. Но автору спасибо за наводку.
Андрей 9 сентября 2014 в 00:02 +2
Поправка. Правильнее так:
Код PHP:
  1. $this->perms = self::getPermissions(array(GUEST_GROUP_ID),$this->id);
webtotma 10 сентября 2014 в 12:53 +1
Спасибо - потестируем.
webtotma 10 сентября 2014 в 14:29 +1
Установил для теста гостям право добавлять Новости. Добавить получается. Новость отправляется на модерацию. Открываю под админом/модератором, пытаюсь разрешить публикацию - 404. И урл - типа mysite/news/.html

Странно, но из 4 добавленных новостей - одна каким-то чудом, хоть и с ошибкой 404, но модерацию прошла.

Про создание юзера с id=0 поподробнее поясните плиз. Вроде создал, но терзают сомнения.
webtotma 8 сентября 2014 в 15:20 +4
Я сам сначала задавался таким вопросом, но

Материал носит ознакомительный характер и предназначен в первую очередь для разработчиков дополнений ICMS2 в которых необходимо манипулирование правилами группы "Гостей".

В дефолтных компонентах результат будет 0. Там гостей стороной пока обошли. Вероятно можно как-то подправить.

Профи отзовитесь - как это сделать, укажите хотя бы направление!
m0skit 13 января 2015 в 18:16 0
Есть какое-то продвижение по этому вопросу? Очень интересует возможность добавления объявлений незарегистрированными пользователями.
Василий 5 апреля 2016 в 14:55 0
да уж, тоже этот вопрос мучает, необходимо добавлять объявления гостям, чтоб без регистрации... решение случайно не нашли??
Скела 21 октября 2015 в 08:07 0
Время идет - тема стоит. Безопасный метод изобретен? Или может в обновлении будет решение?
Василий 5 апреля 2016 в 14:59 0
тоже интересно, появилось ли решение
Capitan 6 февраля 2017 в 13:23 0
пока тема мертва и решения нет :(
Олег с клещами 4 октября 2018 в 16:59 0
Срочно нужно решение!!
@SmartControl 5 октября 2018 в 11:08 +1
Гостевые публикации в каталоге

Без правок системных файлов, все реализовано отдельным компонентом.
Zau4man 5 октября 2018 в 12:34 0
Доработать бы.
- Расширить базовое "уведомление отправлено модератору" на более понятное.
- Что-то выводить при "сохранении в черновики" или скрыть эту кнопку от гостя.
@SmartControl 5 октября 2018 в 12:50 0
Это нельзя доработать - там уже вносить изменения в шаблон. Все что можно было вынести в компонент - я вынес. Дальше либо хаками, либо правками шаблона. Могу лишь добавить инструкцию какие строчки поправить.
Василич 6 октября 2018 в 00:55 0
Попытка добавить изображение:
@SmartControl 6 октября 2018 в 01:08 +1
Да, похоже совсем без вмешательство в код не получится (если нужно дать права на загрузку иллюстраций). Загрузка иллюстраций неавторизованными пользователями сразу возвращает ошибку.

У себя на демо я поправил, добавлю в описание в каталоге.