Wikini

BasculerUnWikiEnLectureSeule

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-44-197-251-102.compute-1.amazonaws.com
Il peut être intéressant de vouloir basculer un wiki en lecture seule, c'est-à-dire rendre impossible toute modification sur quelque page que ce soit.
Cette fonctionnalité peut être intéressante dans les cas suivants :
Cette fonctionnalité ne correspond pas à l'esprit classique d'un wiki mais elle peut intéresser plus d'un utilisateur. Elle peut aussi contribuer à rassurer les plus frileux, en leur montrant qu'il est toujours possible d'avoir la main sur le site et qu'un wiki n'est pas un navire sans capitaine.


Discussions

Spécifications (synthèse des discussions) :


Solutions

Voici un petit hack relativement propre et efficace. Je ne sais pas si c'est la meilleure solution mais elle fonctionne très bien et utilise fort peu de code.
Il s'agit de modifier le fichier /handler/page/edit.php de la manière suivante :

<div class="page">
<?php

// ------ Ajouts --------
// check for readonly wiki (except for admin)
if ($this->GetConfigValue("read_only") == "1" && $this->GetConfigValue("admin") != $this->GetUserName())
{
    
$msg $this->GetConfigValue("ReadOnlyExceptForAdminMessage");
    
$error $msg $this->format($msg) : 
        
"ALERTE : ce wiki est actuellement en lecture seule.\n";
}

// check for readonly wiki (except for trusted user)
$array_auth split(","$this->GetConfigValue("trusted_users"));
if(
$this->GetConfigValue("read_only") == "2" && !in_array($this->GetUserName(), $array_auth) && $this->GetConfigValue("admin") != $this->GetUserName())
{
    
$msg $this->GetConfigValue("ReadOnlyExceptForTrustedUserMessage");
    
$error $msg $this->format($msg) : 
        
"ALERTE : ce wiki est actuellement en lecture seule et ne peut être modifié que par des " .
        
"utilisateurs agréés.\n";
}

// check for readonly for unregistred user
if ($this->GetConfigValue("read_only") == "3" && $this->GetUser() == "")
{
    
$msg $this->GetConfigValue("ReadOnlyExceptForRegistredUserMessage");
    
$error $msg $this->format($msg) :
        
"ALERTE : ce wiki ne peut être modifié que par des utilisateurs duement enregistrés.\n";
}

// ------ fin des ajouts --------

?>

Le paramétrage du blocage est effectué via le fichier le fichier de configuration wakka.config.php :



Cette solution est compatible avec WikiNi 0.4 et 0.5.
Je propose d'intégrer cette solution qui est simple et bigrement efficace en cas d'attaque massive, en attendant de trouver mieux.
-- CharlesNepote


Une autre solution pourrait être d'ajouter une colonne read_only aux pages, ce qui permettrait de faire ce bloquage en écriture par page (par exemple tout le site sauf le BacASable, ou encore uniquement les docs terminées, ...)... -- ProgFou

Une autre solution que j'avais proposée consistait à combiner les DiscussionsGroupesDUtilisateurs et l'InterfaceDAdministrationWikiNi afin d'interdire l'accès au HandlerEdit? (ou de le restreindre à un groupe d'utilisateurs). De cette façon il serait impossible d'éditer les pages si on ne fait pas partie de ce groupe. Une fois que le wiki peut redevenir accessible à tous, il suffirait de rétablir le droit d'accès au HandlerEdit? à sa valeur initiale (pour être consistant avec les acls des pages: *)-- LordFarquaad



FiloNet vous propose sa solution :

Utilisation d'un deuxieme compte qui n'aurait des droits qu'en lecture seule. Un parametre red_only=yes permettrait à wikini de changer de chaine de connexion. C'est un peu radical mais bon, quand on peut le faire - cas de la plupart des sites - pourquoi pas ?



Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]