Interfacer MediaWiki avec LDAP
LDAP Authentification
Article repris du blog http://jpsystem.info/?post/2009/08/07/Configuration-MediaWiki-pour-Intranet-LDAP-partie-2
On veut utiliser un serveur LDAP pour l'authentification sur le Wiki.
Télécharger le plugin :
Extension LDAP_Authentication
Copier le fichier LdapAuthentication.php dans le dossier extensions/LDAP/. Puis :
chown www-data: LdapAuthentication.php
Activation du plugin
Ajouter ces lignes dans 'Localsettings.php' :
require_once( "$IP/extensions/LDAP/LdapAuthentication.php" ); $wgAuth = new LdapAuthenticationPlugin(); $wgLDAPDomainNames = array( "jpsystem" ); $wgLDAPServerNames = array( "jpsystem"=>"ldap.jpsystem.info" ); $wgLDAPUseLocal = false; $wgLDAPEncryptionType = array( "jpsystem"=>"clear" ); $wgLDAPSearchStrings = array( "jpsystem"=>"uid=USER-NAME,ou=people,o=jpsystem,dc=meta,c=fr" ); $wgLDAPBaseDNs = array( "jpsystem"=>"o=jpsystem,dc=meta,c=fr" ); $wgLDAPGroupBaseDNs = array( "jpsystem"=>"ou=Groups,o=jpsystem,dc=meta,c=fr" ); $wgLDAPUserBaseDNs = array( "jpsystem"=>"ou=people,o=jpsystem,dc=meta,c=fr" );
On configure ci-dessus le Wiki pour qu'il interroge le serveur LDAP dans la bonne branche.
Vérification du compte Administrateur
Pour la suite de la configuration, il nous faut vérifier qu'il existe un compte "Administrateur". Pour cela, se connecter à la base de données du Wiki et vérifier le contenu de la table "user_groups".
select * from user_groups ;
Si la table est vide
mysql> select * from user_groups ; Empty set (0.00 sec)
Il faut repérer l'ID de l'utilisateur que l'on veut définir Administrateur :
mysql> select user_name, user_id from user ; +-+---+ | user_name | user_id | +-+---+ | wikiadm | 4 | | jpsystem | 2 | | titi | 3 | | toto | 1 | +-+---+ 4 rows in set (0.00 sec)
Ensuite il faut ajouter l'ID de l'utilisateur à la table « user_groups » avec le nom du groupe :
mysql> INSERT INTO user_groups VALUES('4','bureaucrat'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO user_groups VALUES('4','sysop'); Query OK, 1 row affected (0.00 sec)
mysql> select * from user_groups ; +-++ | ug_user | ug_group | +-++ | 4 | bureaucrat | | 4 | sysop | +-++ 2 rows in set (0.00 sec)
L'utilisateur wikiadm d'ID = 4, sera donc identifié comme Bureaucrate (c'est à dire comme appartenant au groupe de plus au niveau du Wiki (incluant Administrateur)).
Si cette table est remplie
Il suffit de repérer l'utilisateur ayant le bon user_id et de se connecter avec.
Extension PdfExport
On va activer la possibilité d'exporter les pages en PDF. Installation de htmldoc
$apt-get install htmldoc
Création de l'extension PdfExport
Créer le répertoire de l'extension :
cd /var/www/mediawiki/extension mkdir -p PdfExport/
Créer les deux fichiers suivant en copiant le contenu site : PdfExport
vi PdfExport.php vi PdfExport.i18n.php
Lien d'explication : Extension Pdf_Export Modification du fichier PdfExport.php
Pour éviter les problèmes avec HTTPS activé. Avant :
#system("perl -pi -e 's/img src=\"https:\/\//img src=\"http:\/\//g' '$mytemp'");
Après :
system("perl -pi -e 's/img alt=\"\" src=\"/img alt=\"\" src=\"http:\/\/wiki.jpsystem.info/g' '$mytemp'");
Activation du module
Ajouter ce qui suit à 'LocalSettings.php' :
require_once("extensions/PdfExport/PdfExport.php");
L'extension est maintenant activée.
Extension PdfBook
On veut rajouter la possibilité d'exporter toutes les pages d'une catégorie en PDF dans un seule fichier et avec un sommaire.
Installation
Récupérer le fichier : Extension Pdf_Book Mettre le fichier PdfBook.php dans le dossier "PdfBook".
Ajouter cela à la fin du 'LocalSettings.php' :
#Ajout de l'extension PdfBook require_once( "$IP/extensions/PdfBook/PdfBook.php" ); $serverWithoutHttps = 'http://wiki.jpsystem.info';
De plus, il faut modifier le fichier 'PdfBook.php' comme ceci, en rajoutant une variable globale : Avant :
global $wgServer, $wgArticlePath, $wgScriptPath, $wgUploadPath, $wgUploadDirectory, $wgScript;
Après :
global $wgServer, $wgArticlePath, $wgScriptPath, $wgUploadPath, $wgUploadDirectory, $wgScript, $serverWithoutHttps;
Puis ici : Avant :
$text = preg_replace('|(<img[^>]+?src=")(/.+?>)|', "$1$wgServer$2", $text); # make image urls absolute
Après :
$text = preg_replace('|(<img[^>]+?src=")(/.+?>)|', "$1$serverWithoutHttps$2", $text); # make image urls absolute
Template PdfBook
Pour afficher dans les pages des catégories la possibilité d'exporter une sélection d'article en PDF, il faut créer deux templates (modèles) :
template:message
\{\{\{icon\}\}\} | \{\{\{text\}\}\}
|
template:pdf
Modèle:Message
Ainsi dans toutes les pages de catégories, on va insérer ceci :Modèle:Pdf
ATTENTION : A cause de Dotclear, des caractères antislash apparaisse, il faut les enlever ;-)
Cela va permettre d'exporter les articles en pdf, ainsi lorsque vous cliquerez sur le lien, vous pourrez télécharger un fichier contenant un sommaire et tous les articles de la catégorie. Interdiction modification par utilisateur anonyme
Ajouter cela à la fin du LocalSettings.php :
$wgGroupPermissions['*']['edit']= false; $wgGroupPermissions['user']['edit'] = true;
Interdiction utilisateur non inscrit de voir les pages
Ajouter cela à la fin du LocalSettings.php :
$wgGroupPermissions['*']['read']= false; $wgGroupPermissions['user']['read'] = true;
Voila pour l'instant, le reste suivra dans un autre billet....