Restringiracessowiki
Em alguns casos, no uso da ferramenta Wiki, pode ser necessário restringir o acesso ao conteúdo apenas a usuários registrados.
Uma das mais proeminentes ferramentas de wiki é o MediaWiki, usado na Wikipedia. Mas volta e meia é preciso um pouco mais que a interface web para resolver alguns problemas comuns.
Em outro artigo, compartilhei como configurar URLs amigáveis no mediawiki.
Agora, como podemos restringir o acesso apenas a usuários registrados?
1 - Edite o arquivo de configuração do MediaWiki - LocalSettings.php adicionando as seguites opções ao final do arquivo:
- Permitir o acesso a determinados conteúdos
$wgWhitelistRead = array(
"P%C3%A1gina_principal", "Especial:Userlogin", "-", "MediaWiki:Monobook.css"
);
- Restringindo o resto
$wgGroupPermissions['*']['read'] = false; $wgGroupPermissions['*']['edit'] = false;
- Restringindo o registro de novos usuários
- mude para true para permitir novos registros
$wgGroupPermissions['*']['createaccount'] = false; 2 - Caso queria permitir que os usuários atuais convidem outras pessoas, adicione também:
- Permite que usuarios conhecidos criem contas
$wgGroupPermissions['user']['createaccount'] = true; 3 - Melhorando o texto da página de autenticação Apesar de estar tudo funcionando bem a esta altura, uma coisa ainda pode incomodar. A mensagem da tela de acesso negado pode ser um pouco confusa e feia. O título da página é "Erro" e a mensagem é "Autenticação Requisitada"
Para deixar isso mais bonito, acesse a página de edição das mensagens do MediaWiki, via web mesmo, no endereço Especial:Todas_as_mensagens do seu wiki. As mensagens que procuramos aqui são: loginreqlink, loginreqpagetext e loginreqtitle
Mas o problema é: o título da página (na janela do browser) continua sendo "Erro", e esta mensagem é a mesma usada em outros erros. Então, para mudar isso precisamos dar uma pequena "mexidinha" no código do mediawiki. Nada demais, apenas mudar a chamada da mensagem errorpagetitle para loginreqtitle.
Encontramos essa chamada no arquivo include/OutputPage.php, lá pela linha 978:
$this->setPageTitle( wfMsg( 'loginreqtitle' ) ); $this->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
e mudamos para
$this->setPageTitle( wfMsg( 'loginreqtitle' ) ); $this->setHTMLTitle( wfMsg( 'loginreqtitle' ) );
e pronto!