documentação MediaWiki com controle de acesso de usuário externo
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 /
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 ??strong>.
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 .
Você pode usar a extensão Restrição de Acesso Página: http://www.mediawiki.org/ wiki / Extensão:. Page_access_restriction e grupos para fazer isso
Dito isto, MediaWiki não recomendo que você faça isso ...
(Stolen de minha resposta à pergunta Stack Overflow pagamento MediaWiki porta de entrada .)
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']) ? ' - <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: