Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 23/01/2013 13:12:09

fred.ravetier
Guest
From: Toulouse
Registered: 12/08/2010
Posts: 34
Website

Ajouter des utilisateurs à partir d'un fichier excel

Pré-requis: avoir un fichier excel contenant: Prénom, Nom, login, mot de passe, email.

Il faut d'abord convertir le mot de passe au format utilisé pour être stocké en base de données (MD5 binaire + base64):
* stocker les mots de passe dans un fichier texte, un mot de passe par ligne.
* déposer le fichier dans /tmp/passwords.txt (sur une machine ou ametys tourne)
* aller sur _repository de votre site et ouvrir la console pour insérer le code suivant:

importClass(org.ametys.runtime.util.StringUtils);
importClass(org.apache.commons.io.FileUtils);
importClass(java.io.File);

var file = new File('/tmp/passwords.txt');
var lines = FileUtils.readLines(file).iterator();

while (lines.hasNext())
{
  var pwd = lines.next();
  var encodedPwd = StringUtils.md5Base64(pwd);
  println(encodedPwd);
}

* les mots de passe encodés sont alors affichés dans la sortie standard.
* un copier-coller dans excel devrait suffire (il peut être nécessaire de passer par un fichier texte intermédiaire)


Ensuite il suffit de construire une formule sous excel du genre:

=CONCATENER("insert ignore into Users set login='";E2;"',firstname='";B2;"',lastname='";C2;"', email='";G2;"',password='";F2;"';")

J'ajouterais sur la première ligne du fichier le "use" afin de sélectionner la base de données et éviter les erreurs, exemple:

use Ametys_CMS_FO;

Toujours à réaliser d'abord sur une base de données de tests :)

Astuce complémentaire, il est possible d'ajouter les utilisateur dans un groupe déjà créé:

=CONCATENER("insert ignore into Groups_Users set Group_Id = 1, Login='";E2;"';")

Dans cet exemple l'ID du groupe est "1".


Les identifiants de cellules excel sont à ajuster en fonction de votre fichier.

Merci à Nico

Last edited by fred.ravetier (23/01/2013 13:21:47)

Offline

#2 23/01/2013 15:39:03

fred.ravetier
Guest
From: Toulouse
Registered: 12/08/2010
Posts: 34
Website

Re: Ajouter des utilisateurs à partir d'un fichier excel

Je propose une petite amélioration pour ajuster les noms (en majuscules), échapper les apostrophes des noms ou des prénoms:

=CONCATENER("insert ignore into Users set login='";E186;"',firstname='";SUBSTITUE(B186;"'";"\'");"',lastname='";MAJUSCULE(SUBSTITUE(C186;"'";"\'"));"', email='";G186;"',password='";S186;"';")

J'ai pas précisé mais il faut que les login soient "propres", évitez les tirets, apostrophes, ... Il vaut mieux ne pas les traiter de manière automatique afin de pouvoir ensuite facilement communiquer dessus si besoin

Last edited by fred.ravetier (23/01/2013 15:39:11)

Offline

Board footer

Powered by FluxBB