1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

As Designed Обход права создания тем модераторами

Тема в разделе "Баги XenForo", создана пользователем infis, 04.08.2013.

Загрузка
  1. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Тут обнаружился такой момент. Возможно, он был раньше кем-то описан, но я не видел об этом упоминаний. Лично я считаю это багом, но разработчики считают это "Так задумано". Теперь краткая суть.
    Если модератор имеет право в любом каком-то разделе управлять темой (перемещать ее), то он может любую тему из этого раздела переместить в любой раздел, который доступен ему хотя бы для просмотра. Таким образом, даже если в каком-то разделе ему будут недоступны права создания там тем, то он может создать тему в модерируемом им разделе, а затем просто переместить ее в тот, где у него нет прав создавать тему.
    Будем считать это в принципе не критичным. Но только для модераторов. Проблема в том, что в моем плагине "Topic starter's permissions" по просьбе трудящихся я добавил право управления темой (перемещение и объединение), а это дает рядовым пользователям "преодоление" запрета создания тем в некоторых разделах.
    Поэтому прошу быть внимательным при установке права "Управлением темой" как модераторам, так и в моем плагине. В некоторых случаях это может привести к несанкционированной публикации тем в некоторых разделах.

    В своем плагине я позже попробую обойти эту "фишку", чтобы не давать "лишнюю" возможность таких публикаций с помощью перемещения, но пока это работает именно так, как я указал в самом начале.
     
    Mirovinger, resonansER, asket и ещё 1-му нравится это.
  2. resonansER

    resonansER Местный

    Регистрация:
    19.08.11
    Сообщения:
    461
    Симпатии:
    290
    Версия XF:
    1.5.6
    infis, это БАГ ОДНОЗНАЧНО! Как можно было так ударится, чтобы утверждать, что это as intended?!
    Ну или тут, по-моему, разрабы накосячили. Это как раз и есть лазейка для модераторов. Вопрос НЕ в доверии ли НЕ доверии. Вопрос в том, что так в корне неверно.
     
  3. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Я тоже думаю, что нельзя проверять права только на просмотр узла. И переизбыток доверия модераторам тут не уместен. Просто получается, что давать права на управление темами (перемещение и объединение) нужно только единицам, скорее даже только супер-модераторам. А это сужает круг лиц работников форума... В общем, неоднозначно это, ох неоднозначно.
    Кстати, по хорошему нужно разделять права перемещения и объединения. Все таки это сильно разные функции.
    --- добавлено : 5 авг 2013 в 03:18 ---
    У меня есть раздел, где публикация темы практически равна оферте. Так вот просмотр там доступен участникам с повышенным уровнем (там производятся финансовые операции, а потому доступ просто зарегистрированным там отсутствует). Но среди этих участников есть модераторы в каких-то совсем простых разделах (например, конкурсы). Так вот по мнению разработчиков модератор конкурсов запросто может создать тему в финансовом разделе, тогда как задумано, что в финансовом разделе публикация темы производится только администраторами ресурса. Для исключения таких несанкционированных публикаций мне придется снимать с модераторов конкурсов функцию перемещения и объединения тем внутри их раздела, а на администраторов форума эту функцию повесить. Налицо лишняя работа администраторам вместо грамотного распределения обязанностей.

    Вот только как изложить это на чистом английском, чтобы понятно было разработчикам, а не только мне и части русскоязычного населения, я не знаю :(
     
    Kolya groza morey нравится это.
  4. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    Имхо, лучше расширить права, чтобы модератор мог перемещать темы только в те разделы, где он может создавать тему.
    Для этого расширяем XenForo_ControllerPublicThread

    Код:
    public function actionMove()
        {
            $threadId = $this->_input->filterSingle('thread_id', XenForo_Input::UINT);
     
            $ftpHelper = $this->getHelper('ForumThreadPost');
            list($thread, $forum) = $ftpHelper->assertThreadValidAndViewable($threadId);
     
            $threadModel = $this->_getThreadModel();
     
            if (!$threadModel->canMoveThread($thread, $forum, $errorPhraseKey))
            {
                throw $this->getErrorOrNoPermissionResponseException($errorPhraseKey);
            }
     
            if ($this->isConfirmedPost()) // move the thread
            {
                $input = $this->_input->filter(array(
                                                    'node_id' => XenForo_Input::UINT,
                                                    'title' => XenForo_Input::STRING,
                                                    'prefix_id' => XenForo_Input::UINT,
     
                                                    'create_redirect' => XenForo_Input::STRING,
                                                    'redirect_ttl_value' => XenForo_Input::UINT,
                                                    'redirect_ttl_unit' => XenForo_Input::STRING
                                              ));
                $inputTitle = $this->_input->filterSingle('title', XenForo_Input::STRING);
     
     
            }
     
            $targetForum =$this->getModelFromCache('XenForo_Model_Forum')->getForumById($input['node_id']);
            $canStartThread = $this->getModelFromCache('XenForo_Model_Forum')->canPostThreadInForum($targetForum);
            if ($canStartThread)
            {
                return parent::actionMove;
            }
            else
            {
                return $this->responseNoPermission();
            }
        }
    Если где ошибся, поправьте :)
     
    resonansER и Mirovinger нравится это.
  5. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Во-первых, там ошибка. Во-вторых, это при всем желании будет работать только непосредственно из темы, а не из форума (списка тем), так как для этого потребуется расширить XenForo_ControllerPublic_InlineMod_Thread, что не так просто.
    Ну и в третьих - таким способом проверка не уберет из списка форумов закрытые для создания, а будет при подтверждении переноса отказывать в переносе. А это слишком костыльно, хотя и имеет право на жизнь :)

    Все же лучше XenForo_Model_Node переделать. В общем будет время - посмотрю.
     
    asket, resonansER и Mirovinger нравится это.

Поделиться этой страницей