Документация MediaWiki с внешним контролем доступа пользователя - PullRequest
5 голосов
/ 02 апреля 2009

Мы используем MediaWiki для нашей документации по программному и аппаратному обеспечению. Похоже, что предоставление / отмена «доступа для чтения» к частям документации для наших внешних пользователей - клиентов, партнеров по проекту - нелегко достичь. Как мы можем контролировать доступ для чтения к некоторым областям документации на основе прав доступа пользователя или роли?

Редактировать : Я спрашиваю об этом, потому что мне не нравится возвращаться к «старому стилю» документации - хранению документов Office в десятках разных мест, и никто не знает, где они находятся. , Поэтому, если нет возможности предоставить пользователям ограниченный доступ только к информации о своих продуктах, я боюсь, что руководство откажется от всего решения MediaWiki и представит что-то «новое и лучшее». (это может означать, что мы должны перенести весь контент в новую систему, форматирование и гиперссылки будут потеряны и т. д.).


Большое спасибо за комментарии и ответы!

Некоторые интересные сведения доступны по адресу http://meta.wikimedia.org/wiki/Access_control

Например, есть патч HiddenWiki, который, похоже, находится в активной разработке, находится по адресу http://sourceforge.net/projects/hiddenwiki/

Ответы [ 8 ]

3 голосов
/ 02 апреля 2009

MediaWiki на самом деле не предназначен для отключения просмотра страниц зарегистрированными пользователями. Я не думаю, что вы можете сделать это без какой-либо боли.

Из документации (переформатировано):

Чтобы страница функционировала нормально для одних пользователей, но была невидимой для других, как это возможно, например, в большинстве программ для форумов, это совсем другое дело. MediaWiki разработан для двух основных режимов доступа:

  • Каждый может просматривать каждую страницу в вики (за исключением нескольких специальных страниц). Этот режим используется в Википедии и ее дочерних проектах.
  • Анонимные пользователи могут просматривать только главную страницу и страницу входа в систему и не могут редактировать никакие страницы. Это в основном то же самое, что и выше, с точки зрения технической реализации (просто дополнительная проверка для каждого просмотра страницы), поэтому оно существует. Это режим работы, используемый некоторыми частными вики, например, используемыми различными комитетами Викимедиа.

Моя школа использует вики так, как ты хочешь. Мой друг установил их. Он должен был взломать программное обеспечение, чтобы заставить его работать. Судя по моему опыту в MediaWiki, вы весело проводите время, пытаясь заставить это работать.

У вас есть четыре варианта

  • Получите плагин MediaWiki и обновите его.
  • Взломайте его самостоятельно и повторяйте работу при каждом обновлении.
  • Используйте другое программное обеспечение вики.
  • Установите новую приватную вики, как описано выше.
1 голос
/ 09 апреля 2009

Звучит так, будто вы пытаетесь отправиться в MediaWiki туда, куда не обязательно идти, поэтому я бы предложил выбрать лучший инструмент .

Что касается вики, то мы прошли этап MediaWiki, но в итоге выбрали MindTouch Deki , потому что он просто выглядит и действует лучше, и им легче управлять (для таких вещей, как контроль доступа). Вы можете найти все подробности на их сайте, я могу просто сказать, что он отлично работал из коробки.

А вот и хорошая новость: теперь доступен конвертер MediaWiki в Deki . Я не могу ручаться за это (быть новым и всем), но так как все части бесплатны, я предлагаю вам потратить несколько часов и попытаться увидеть, что вы можете сделать, вам может понравиться результат.

1 голос
/ 08 апреля 2009

Как отмечали другие, это не основная особенность MediaWiki.

Самым простым решением может быть открытая и закрытая вики с ссылками между вики. (Начните с копирования оригинальной вики, удаления ненужных страниц из общедоступной установки и добавления перенаправлений).

Другая возможность может состоять в том, чтобы иметь отдельные пространства имен для публичных и личных страниц и ограничивать доступность в соответствии с пространством имен в файле конфигурации.

0 голосов
/ 01 марта 2014

Если у вас есть частная вики, вы можете использовать флаг $wgBlockDisablesLogin = true в LocalSettings.php, чтобы отключить возможность входа в систему заблокированных пользователей (затем просто заблокировать кого-то, чтобы отозвать любой доступ). Другой вариант - просто поместить всю вики за vpn.

Ссылки:

0 голосов
/ 18 декабря 2013

Вот мое решение.

Мы оставляем нашу вики позади .htpasswd, а скрипт php на поддомене (external.wiki.mydomain.co.uk) выбирает страницу и обслуживает ее , если она соответствует массиву разрешенных страниц,

Он также удаляет боковые панели и нижний колонтитул и т. Д. Это, вероятно, зависит от стиля, который использует ваша вики, функция strip_content () может нуждаться в настройке.

    $allowed = array(   "Architecture",
                        "Database_Design",
                        "Authentication",
                        "Branding");

    //put your own .htpasswd credentials in here
    $username = "USERNAME";
    $password = "P@ssw)rd";
    $url = "http://internal.wiki.mydomain.co.uk";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $output = curl_exec($ch);

    //I have not mod-rewritten the index.php out of the url, hence the 2 lines below...
    $page = str_replace("/index.php/", "",$_SERVER['PHP_SELF']);
    $page = $page == '/index.php' ? "Home" : $page;

    $links = "<div><a href = '/' >Home</a>";
    $links .= isset($_SERVER['HTTP_REFERER']) ? '&nbsp;-&nbsp;<a href = "' . $_SERVER['HTTP_REFERER'] . '" >Back</a>' : '';
    $links .= "</div>";
    if (!in_array($page, $allowed)) {
        $out = "<div>Access denied to " . $page . '</div>' . $links;
    } else {
        curl_setopt($ch, CURLOPT_URL, $url . "/index.php/" . $page);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        $out = $links . '<br />' . strip_content($output);
    }
    curl_close($ch);
    echo $out;

    /**
     * Strip out unwanted bits of the page, such as side bar and header and footer.
     * @param string $html The raw html
     * @return string
     */
    function strip_content($html)
    {
        $patterns = array(  '!<span class="editsection">.*?<\/span>!is',
                             '@<!-- footer -->.*?<!-- /footer -->@is',
                            '@<!-- panel -->.*?<!-- /panel -->@is',
                            '@<!-- header -->.*?<!-- /header -->@is'

            );
        return preg_replace($patterns, "", $html);
    }

Вы можете расширить это, добавив логин в начале, чтобы скрипт мог выбирать разные подмножества страниц для разных пользователей.

0 голосов
/ 12 апреля 2009

Если вы назовете страницу X/Y, ссылка будет wiki/X/Y, что означает, что вы можете установить права доступа в любом хорошем прокси-сервере, например, в Apache HTTP на основе "directory". Вы можете подключить прокси к домену Windows или просто к списку имен пользователей.

0 голосов
/ 08 апреля 2009

Вы можете создать пространства имен MediaWiki и назначить определенных пользователей определенному пространству имен. Вы должны быть осторожны, хотя ... страницы в новых пространствах имен не отображаются по умолчанию при поиске на сайте без редактирования файла LocalSettings.php. Обратитесь к документации для получения дополнительной информации.

См. неродственную нить .

0 голосов
/ 02 апреля 2009

Для этого можно использовать расширение ограничения доступа к странице: http://www.mediawiki.org/wiki/Extension:Page_access_restriction и группы.

Как говорится, MediaWiki не рекомендует вам это делать ...

(украдено у мой ответ на вопрос переполнения стека платежный шлюз MediaWiki .)

...