SPIP - ограничение доступа при добавлении ключа

Небольшая заметка о решении насущной задачи - как разрешить добавлять ключи к материалам только вебмастерам, но не администраторам сайта.

Постановка задачи

Ко всем материалам ключи (mots) могут добавлять только вебмастера, но не редакторы/администраторы сайта.

Исходные данные

Мы знаем следующее:

  • какая-то система распределения прав уже есть
  • статус текущего пользователя хранится в сессии, для вебмастера это {#SESSION{webmestre}|=={oui} }
  • поскольку ключи - это отдельный плагин, то надо смотреть в папку /plugin-dist/mots/
  • За авторизацию и распределение прав отвечает пайплайн autoriser

Решение

  • Вдумчиво изучаем файл mots/paquet.xml. По содержимому файла ясно, что все работа в авторизацией описана в mots_autoriser.php
  • В файле, благо его вдумчиво комментировали, есть функция autoriser_associermots_dist($faire,$type,$id,$qui,$opt) с примерно таким описанием:

    /**
    * Autorisation d’associer des mots à un objet
    *
    * Si groupe_champ ou id_groupe est fourni dans le tableau d’options,
    * on regarde les droits pour ce groupe en particulier
    *
    * On interdit aussi d’associer des mots à d’autres mots ou groupes de mots
    **/

  • В первой строке функции добавляем проверку на статус текущего пользователя, если он не вебмастер, то на этом заканчиваем работу.
            if ($qui['webmestre']!='oui') return false;
  • Вот так выглядит результат

Однако, остается открытым вопрос: как вынести измененную функцию из плагина, что бы при следующем апгрейде SPIP не затерлись изменения?

наверх