Bonjour,
Nos utilisateurs de Moodle sont inscrits dans un anuaire LDAP. La création du compte sur Moodle est faite lors de la 1ère connexion sur Moodle, celui-ci allant consulter l'annuaire LDAP. Dans certains cas, l'administrateur ou des responsables de cours aimeraient associer à des cours des utilisateurs inscits dans LDAP mais qui ne se sont jamais encore connectés, et qui n'ont pas de compte Moodle. Est-ce possible ? Peut-on forcer la création d'un compte d'un utilisateur inscrit dans LDAP (sans que l'on connaisse son mot de passe sinon c'est facile) ?
Merci d'avance pour toute aide
Christian
Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
Nombre de réponses : 5Re: Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
Nous aussi nous buttons sur le même problème. Mes étudiants sont également enregistrés sur le LDAP qui effectue l'authentification d'entrée. Nous n'avons pas non plus identifié de solution. On ne peut même pas compter sur un compte "préenregistré" au même nom, car Moodle contrôle les Id d'utilisateur générés lorsque le compte image du compte LDAP est créé.
Pour l'instant, nous réglons ça en visuel, lors des présentiels, en contrôlant que l'élève se logue effectivement sur la plate-forme, mais c'est pas formidable.
Re: Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
J'admets qu'il doit y avoir plus élégant, mais rien n'empêche d'utiliser la méthode suivante :
Ensuite, tout dépend à quel type de public l'on s'adresse : avec des enfants, je manque d'expérience. En revanche, avec des adultes en Bac + n, arrive un moment ou ce que les étasuniens nomment "computer litteracy" et que la France essaye d'évaluer avec le C2I devient un critère de sélection. Pour parler plus crûment, s'ils ne sont pas foutus de se connecter sur un système aussi simple, que font-ils dans le supérieur ?
- créer l'utilisateur manuellement, selon la méthode "interne",
- l'inscrire au cours classiquement,
- modifier la base mySQL (table xxx_user) en changeant le mode d'authentification en ldap, le mot de passe en "not cached" et le uid en fonction de ce que vous utilisez en local comme identifiant.
Ensuite, tout dépend à quel type de public l'on s'adresse : avec des enfants, je manque d'expérience. En revanche, avec des adultes en Bac + n, arrive un moment ou ce que les étasuniens nomment "computer litteracy" et que la France essaye d'évaluer avec le C2I devient un critère de sélection. Pour parler plus crûment, s'ils ne sont pas foutus de se connecter sur un système aussi simple, que font-ils dans le supérieur ?
Re: Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
Je souhaite forcer la création de comptes surtout pour les profs et pas pour les élèves. Etant dans une cellule TICE, nous créons des espaces contenant des ressources (soit nouvelles soit transférées depuis une autre plate-forme). Nous souhaitons qu'à la première connexion du prof, il voit que tout est ok et qu'il est bien administrateur de son espace de cours. Mais pour cela il faut qu'il se soit déjà connecté avant de pouvoir le déclarer en tant responsable du cours. On tourne en rond.
Re: Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
Deux solutions semblent possibles :
1) Utiliser ponctuellement la procédure Importer des utilisateurs après avoir produit un fichier texte des enseignants (voire des étudiants) à partir de LDAP en utilisant un petit script "maison" (*).
2) Synchroniser régulièrement Moodle par rapport à LDAP, en utilisant/adaptant le script fourni par Moodle : /moodle/auth/ldap/auth_ldap_sync_users.php
(*) Ci-suit le script que nous utilisions (appel directement à partir du navigateur et enregistrement du résultat affiché). À adapter suivant le schéma LDAP de l'établissement.
<?
header("Content-Type: text/plain");
$BASE_DN_LDAP="dc=ldap, dc=uhb, dc=fr";
$SERVEUR_LDAP = "ldap.uhb.fr";
$USER_LDAP = "cn=appliweb_all_ro,ou=System,dc=ldap,dc=uhb,dc=fr";
$MDP_USER_LDAP = "MotDePasseLDAP";
// Assurez-vous que l'hôte est correct
// et que vous avez un certificat valide
$ldaphost = "ldap://ldap.uhb.fr/";
// Connexion à LDAP
$ldapconn = ldap_connect( $ldaphost )
or die( "Impossible de se connecter au serveur LDAP {$ldaphost}" );
$ldapbind = ldap_bind($ldapconn, $USER_LDAP, $MDP_USER_LDAP);
$filter="(&(uid=*)(eduPersonAffiliation=faculty))";
$justthese = array( "uid", "sn", "givenname", "mail" );
$sr=ldap_search($ldapconn, "ou=people,".$BASE_DN_LDAP, $filter, $justthese);
$info = ldap_get_entries($ldapconn, $sr);
$max=$info["count"];
echo "username,password,firstname,lastname,email\r\n";
//
function utf8_decode_array(&$array) {
if( is_array($array) ) {
array_walk($array, 'utf8_decode_array');
} else {
$array = utf8_decode($array);
}
}
utf8_decode_array($info);
for ( $i = 0 ; $i < $max ; $i++ ) {
if (!strpos($info[$i]["dn"],"Peopleoff")) {
echo $info[$i]["uid"][0] . "," . "INCONNU" . ",";
echo $info[$i]["givenname"][0] . "," . $info[$i]["sn"][0] . ",";
echo $info[$i]["mail"][0] . "\r\n";
}
}
?>
1) Utiliser ponctuellement la procédure Importer des utilisateurs après avoir produit un fichier texte des enseignants (voire des étudiants) à partir de LDAP en utilisant un petit script "maison" (*).
2) Synchroniser régulièrement Moodle par rapport à LDAP, en utilisant/adaptant le script fourni par Moodle : /moodle/auth/ldap/auth_ldap_sync_users.php
(*) Ci-suit le script que nous utilisions (appel directement à partir du navigateur et enregistrement du résultat affiché). À adapter suivant le schéma LDAP de l'établissement.
<?
header("Content-Type: text/plain");
$BASE_DN_LDAP="dc=ldap, dc=uhb, dc=fr";
$SERVEUR_LDAP = "ldap.uhb.fr";
$USER_LDAP = "cn=appliweb_all_ro,ou=System,dc=ldap,dc=uhb,dc=fr";
$MDP_USER_LDAP = "MotDePasseLDAP";
// Assurez-vous que l'hôte est correct
// et que vous avez un certificat valide
$ldaphost = "ldap://ldap.uhb.fr/";
// Connexion à LDAP
$ldapconn = ldap_connect( $ldaphost )
or die( "Impossible de se connecter au serveur LDAP {$ldaphost}" );
$ldapbind = ldap_bind($ldapconn, $USER_LDAP, $MDP_USER_LDAP);
$filter="(&(uid=*)(eduPersonAffiliation=faculty))";
$justthese = array( "uid", "sn", "givenname", "mail" );
$sr=ldap_search($ldapconn, "ou=people,".$BASE_DN_LDAP, $filter, $justthese);
$info = ldap_get_entries($ldapconn, $sr);
$max=$info["count"];
echo "username,password,firstname,lastname,email\r\n";
//
function utf8_decode_array(&$array) {
if( is_array($array) ) {
array_walk($array, 'utf8_decode_array');
} else {
$array = utf8_decode($array);
}
}
utf8_decode_array($info);
for ( $i = 0 ; $i < $max ; $i++ ) {
if (!strpos($info[$i]["dn"],"Peopleoff")) {
echo $info[$i]["uid"][0] . "," . "INCONNU" . ",";
echo $info[$i]["givenname"][0] . "," . $info[$i]["sn"][0] . ",";
echo $info[$i]["mail"][0] . "\r\n";
}
}
?>
Re: Forcer la création d'un compte d'un utilisateur inscrit dans LDAP
Bonjour,
Pour ma part "et pour expérimenter cette année", j'ai préféré faire une extraction dans un fichier plat des étudiants inscrits à partir des comptes réseau.
Cela me permet de préinscrire les étudiants à des cours "administratifs" par année de formation et ensuite d'utilister les macro-cours pour gérer les cours dans lesquels je souhaite dès leur construction définir des groupes.
JYC
Pour ma part "et pour expérimenter cette année", j'ai préféré faire une extraction dans un fichier plat des étudiants inscrits à partir des comptes réseau.
Cela me permet de préinscrire les étudiants à des cours "administratifs" par année de formation et ensuite d'utilister les macro-cours pour gérer les cours dans lesquels je souhaite dès leur construction définir des groupes.
JYC