Interfacer MediaWiki avec LDAP

De TIc-siT_wiki
Sauter à la navigation Sauter à la recherche

LDAP Authentification[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

Il suffit de repérer l'utilisateur ayant le bon user_id et de se connecter avec.

Extension PdfExport[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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....