Pergunta

Estamos usando MediaWiki inhouse para o nosso software e documentação hardware. Parece que a concessão / revogação de "acesso de leitura" para partes da documentação para os nossos usuários externos - clientes, parceiros do projecto - não é fácil de conseguir. Como podemos controlar o acesso de leitura para algumas áreas da documentação com base no usuário ou função direitos de acesso?

Editar : Estou perguntando isso porque eu não gosto de voltar para o "estilo antigo" da documentação - guardar documentos do Office em dezenas de locais diferentes, e ninguém tem uma pista onde eles estão. Então, se não há nenhuma maneira para dar aos usuários acesso limitado apenas às informações de produto, eu tenho medo que a gestão vai cair toda a solução MediaWiki e introduzir algo "novo e melhor". (Isso pode significar que temos de transferir todo o conteúdo para um novo sistema, formatação e hiperlinks seria perdido etc ...).


Muito obrigado pelos comentários e respostas!

Algumas informações interessantes estão disponíveis em http://meta.wikimedia.org/wiki/Access_control

Por exemplo, existe um patch HiddenWiki que parece ser em desenvolvimento ativo, localizado na http: // sourceforge .net / projetos / hiddenwiki /

Foi útil?

Solução

MediaWiki não é realmente concebido para desativar a visualização de páginas por utilizadores registados. Eu não acho que você pode fazer isso sem um pouco de dor.

A partir da documentação (reformated):

Para ter um ato página normalmente para alguns usuários, mas ser invisível para os outros, como é possível, por exemplo na maioria dos softwares fórum, é um assunto muito diferente. MediaWiki é projetado para dois modos básicos de acesso:

  • Todos podem visualizar cada página do wiki (com a possível exceção de algumas páginas especiais). Este é o modo usado pela Wikipédia e seus projetos irmãos.
  • Os usuários anônimos só pode exibir a página principal e página de login, e não pode editar qualquer página. Este é basicamente o mesmo que o anterior, em termos de implementação técnica (apenas uma verificação extra para cada exibição de página), razão pela qual ela existe. Este é o modo de operação utilizado por certos privada wikis tais como aqueles usados ??por vários comitês Wikimedia.

Os meus usos escolares wikis do jeito que você quiser. Um amigo meu configurá-los. Ele teve que cortar o software extensivamente para fazê-lo funcionar. Da minha experiência em cavar em torno de MediaWiki, você está em um momento divertido tentar obter esse trabalho.

Você tem quatro opções

  • Get um MediaWiki plugin e têm atualizações de quebrá-lo.
  • cortá-lo a si mesmo e refazer o trabalho cada vez que você atualizar.
  • Use software wiki diferente.
  • Configuração de um novo wiki privado como descrito acima.

Outras dicas

Como outros apontaram, isso não é uma característica fundamental da MediaWiki.

Solução mais simples poderia ser a de ter um público e um wiki privada com ligações inter-wiki. (Start, copiando o wiki original e remover páginas indesejadas da instalação pública, e adicionando redirecionamentos).

Outra possibilidade poderia ser a de ter namespaces separados para páginas públicas e privadas, e restringir a acessibilidade de acordo com namespace no arquivo de configuração.

Ele faz soar como você está tentando tirar MediaWiki lugares onde ele não necessariamente querem ir, então eu sugiro escolher a melhor ferramenta .

Como wikis ir, passamos por uma fase MediaWiki, mas acabei indo com MindTouch Deki porque apenas olha e age mais agradável, e é mais fácil de gerir (para coisas como controle de acesso). Você pode encontrar todos os detalhes sobre o seu site, eu posso apenas dizer que ele trabalhou muito fora da caixa.

Aqui vem a parte boa: há agora um MediaWiki ao conversor Deki disponível. Eu não posso garantir isso (ser novo e tudo), mas desde que todas as partes são livres, a minha sugestão é que você tome algumas horas e tentar ver o que você pode ir, você pode apenas como o resultado.

Você pode criar MediaWiki Namespaces e atribuir determinados usuários a um namespace particular. Você tem que ter cuidado embora ... páginas em novos espaços de nome não aparecem por padrão em pesquisas no site sem editar o arquivo LocalSettings.php. Consulte a documentação para mais informações.

Veja este fio semi-relacionada .

Se você citar X/Y página, o link será wiki/X/Y, o que significa que você pode definir direitos de acesso em qualquer boa proxy, como o Apache HTTP baseado em "diretório". Você pode conectar o proxy para um domínio do Windows ou apenas uma lista de nomes de usuários.

Aqui está a minha solução.

Nós mantemos a nossa wiki trás .htpasswd e um script php em um subdomínio (external.wiki.mydomain.co.uk) obtém uma página e serve-o se ele corresponde a um conjunto de páginas permitidas .

Ele também retira as barras laterais e rodapé etc. Este é provavelmente dependente do estilo de seu wiki está usando, a função strip_content () pode precisar de ajustes.

    $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);
    }

Você poderia estender isso adicionando um login no início assim que o roteiro pode escolher diferentes subconjuntos de páginas para diferentes usuários.

Se você tem um wiki privado, então você pode usar o $wgBlockDisablesLogin = true bandeira no LocalSettings.php para desativar a capacidade de login de usuários bloqueados (então apenas bloquear alguém de revogar todo o acesso). Outra opção é simplesmente colocar todo o wiki atrás de uma VPN.

Referências:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top