Problématique :
Dans un SPIP d’établissement scolaire on envisage la situation "standard" dans laquelle :
- tous les profs ont un compte administrateur de la rubrique de leur discipline
- tous les élèves ont un compte auteur
- (éventuellement tous les parents d’élèves ont un compte visiteur)
La génération de ces centaines de comptes et leur mise à jour annuelle est gérée via le plugin csv2spip : cf [admin] Importation des comptes utilisateurs dans les applications web de l’établissement.
Faire une zone d’accès restreint dans un SPIP d’établissement scolaire qui comprendra plusieurs dizaines (voire centaines) d’utilisateurs autorisés, exemples :
- une rubrique "Salle des profs" visible et accessible uniquement pour tous les profs
- une rubrique "Compte-rendus sorties DP3" accessibles pour tous les élèves de la 3ème DP3
...
Si la création de ces rubriques à accès réservé est réalisable sans problème avec le plugin accès restreint, le problème principal est que la version compatible SPIP 1.9.2 oblige à donner les autorisations aux auteurs un par un en passant par la page de configuration de leur compte.
Si on peut le faire pour des zones attribuées à quelques comptes auteurs (2 ou 3), il paraît totalement exclu de le faire pour des dizaines ou centaines d’auteurs !
Par ailleurs on exclu la "solution de facilité" qui consiste à créer un compte auteur "partagé" pour chacune de ces zones : non seulement cette solution n’est pas sérieuse d’un point de vue sécurité (le mot de passe du compte finira forcément par être divulgué publiquement) mais en plus elle n’est pas compatible avec le fait que chaque compte utilisateur doit pouvoir être associé avec plusieurs zones d’accès restreint.
Solution possible : attribution des zones à l’aide du plugin CSV Import
Le plugin "CSV Import" (http://www.spip-contrib.net/Utilisa...) qui permet de faire des imports/exports vers ou à partir de fichiers CSV dans n’importe quelle table de SPIP est donc tout à fait adapté pour faire l’attribution "en masse" d’une zone à un grand nombre d’auteurs.
Pour comprendre le principe de cette manipulation il est faut savoir que l’association des auteurs à une zone d’accès restreint est géré par la table spip_zones_auteurs de la base de données qui stocke des "paires" id_zone / id_auteur :
id_zone | id_auteur |
---|---|
1 | 23 |
1 | 56 |
1 | 3 |
2 | 45 |
2 | 3 |
... | ... |
- la zone d’identifiant 1 est autorisée pour les auteurs d’identifiants 23, 56 et 3
- la zone d’identifiant 2 est autorisée pour les auteurs 45 et 3.
Procédure détaillée : exemple de la création de la zone "Salle des profs"
Etape 0 : déclaration des tables manipulables via le plugin CSV Import :
le plugin CSV Import ne peut importer ou exporter que les tables pour lesquelles il est explicitement autorisé. Par défaut (configuration de base du plugin) il n’est associé avec aucune table.
On va donc commencer par autoriser ce plugins pour :
- la table des auteurs spip_auteurs en exportation seule
- la table spip_zones_auteurs en exportation et importation (ajout de données ou remplacement complet des données de toute la table)
Pour cela on ouvre l’interface de ce plugin : menu Edition > Import CSV > outil Administrer les tables : la liste des tables de SPIP est proposée.
On va donc cocher uniquement pour les administrateurs :
- la table spip_auteurs : "Exporter", les champs nécessaires (donc cochés) seront :
- id_auteur
- nom
- statut
- la table spip_zones_auteurs : "Ajouter des données", "Tout remplacer" et "Exporter", les 2 champs (id_zone et id_auteur) seront cochés
On valide ces choix avec le bouton Enregistrer en bas de page puis on revient à la page d’accueil du plugin CSV Iimport avec le bouton Retour.
1ère étape : création de la zone
- création de la rubrique "Salle des profs" à la racine du site par exemple
- avec le plugin "Accès restreint" création d’une zone à accès réservé comprenant cette rubrique, noter son identifiant numérique (dans la suite de notre exemple elle porte le numéro 1).
Ici on souhaite que les élèves (qui ont accès à l’espace privé puisqu’ils disposent d’un compte auteur) n’aient pas du tout accès au secteur "Salle des profs" la restriction d’accès portera donc sur les parties publique et privée.
2ème étape : récupération de la liste des id_auteur des profs
récupérer la liste des identifiants des profs à partir d’une exportation via le plugin CSV Import :
- dans la page d’accueil de CSV Import, utiliser le lien Télécharger de la table spip_auteurs pour générer le fichier CSV comprenant les champs de la table auteurs désignés dans l’étape 0.
- dans la page de configuration du format de l’export choisir CSV pour Excel ( ;) c’est à dire un tableur au format CSV avec " ;" comme séparateur des colonnes.
- Enregistrer le fichier avec l’extension csv (et non pas xls !).
Ouvrir ce fichier dans LibreOffice/OpenOffice et faire un tri sur la colonne statut
Le fichier obtenu ressemblera au tableau suivant :
id_auteur | nom | statut |
---|---|---|
1 | admin1 | 0minirezo |
2450 | Mr Machin | 0minirezo |
2776 | PROF01 Hortense | 0minirezo |
2777 | PROF02 Marcel | 0minirezo |
2778 | PROF03 Albert | 0minirezo |
... | ||
2536 | ELEVE01 Nadia | 1comite |
2537 | ELEVE02 Guillaume | 1comite |
2538 | ELEVE03 Janique | 1comite |
... | ||
2772 | PARENT117 | 6forum |
2773 | PARENT118 | 6forum |
2774 | PARENT119 | 6forum |
2775 | PARENT120 | 6forum |
... |
NB : correspondance des codes de statuts :
- 0minirezo = administrateurs (généraux et de rubriques)
- 1comite = auteurs
- 6forum = visiteurs
Puisque dans notre exemple nous souhaitons autoriser l’accès à la zone Salle des profs pour tous les profs (i.e. les comptes ayant le statut admin), on ne va garder que les lignes ayant le statut 0minirezo.
NB : on peut éventuellement supprimer la ligne de Mr Machin qui est le proviseur de l’établissement et à qui on ne souhaite pas donner l’accès à la zone réservée au profs...
3ème étape : association des auteurs à la zone
id_zone | id_auteur |
---|---|
1 | 1 |
1 | 2450 |
1 | 2776 |
1 | 2777 |
1 | 2778 |
... |
pour importer les auteurs autorisés pour la zone d’identifiant 1, on va donc transformer le fichier extrait à l’étape précédente pour avoir le contenu suivant :
Ce fichier sera enregistré avec les paramètres de formatage suivants (voir [admin] Importation des comptes utilisateurs dans les applications web de l’établissement pour la mise au format d’un fichier CSV) :
- jeu de caractère : UTF 8
- séparateur de champ :point virgule
- pas de séparateur de texte
On va ensuite pouvoir l’importer dans la table spip_zones_auteurs à l’aide du plugin CSV Import :
- dans la page d’accueil du plugin ouvrir le lien sur le titre de la table spip_zones_auteurs
- sélectionner le fichier CSV obtenu à l’étape précédente avec le bouton Parcourir et valider.
- dans la page suivante s’assurer que la correspondance entre les champs de la table et les colonnes du fichier est correcte sinon modifier cette correspondance à l’aide des menus Champ CSV Champ Table et refaire le test de correspondance en cliquant sur Appliquer.
- lorsque le 3ème bloc de la page d’import correspond bien à ce que l’on veut obtenir, valider avec le bouton Ajouter à la table
NB : on n’utilisera que très rarement le bouton Remplacer toute la table qui impose une réinitialisation complète des zones d’accès existantes ! - valider la page suivante de confirmation de l’importation.
en principe dans la version pour SPIP 1.9.2 du plugin CSV Import vous devriez obtenir un message d’erreur (n erreurs lors de l’ajout dans la base) : il s’agit d’un bogue, ne pas en tenir compte !
Résultats :
- tous les utilisateurs dont l’identifiant était dans le fichier (les profs dans notre exemple) sont inscrits dans la zone d’accès restreint n°1
- on peut imaginer faire cette opération pour autoriser 200 ou 2000 comptes dans cette zone sans que ça prenne plus de clics...