diff --git a/ecrire/action/editer_message.php b/ecrire/action/editer_message.php
index cf8aaf65f109db8f44705f5a97028949d6aad65d..976483c0fbd89199740b65d54475a1b8831775f1 100644
--- a/ecrire/action/editer_message.php
+++ b/ecrire/action/editer_message.php
@@ -27,6 +27,8 @@ function action_editer_message_dist() {
 		action_editer_message_post_supprimer($r[1]);
 	elseif (preg_match(',^(\d+)\W@(\d+)$,', $arg, $r))
 		action_editer_message_post_ajouter($r[1], $r[2]);	  
+	elseif (preg_match(',^(\d+)\W:(\d+)$,', $arg, $r))
+		action_editer_message_post_vu($r[1], $r[2]);	  
 	elseif (preg_match(',^(\d+)\W-(\d+)$,', $arg, $r))
 		action_editer_message_post_retirer($r[1], $r[2]);	  
 	elseif (preg_match(',^(\d+)\W(\w+)$,', $arg, $r))
@@ -40,19 +42,22 @@ function action_editer_message_dist() {
 	else 	spip_log("action_editer_message_dist $arg pas compris");
 }
 
-// http://doc.spip.org/@action_editer_message_post_supprimer
 function action_editer_message_post_supprimer($id_message) {
 	spip_query("DELETE FROM spip_messages WHERE id_message=$id_message");
 	spip_query("DELETE FROM spip_auteurs_messages WHERE id_message=$id_message");
 	spip_query("DELETE FROM spip_forum WHERE id_message=id_message");
 }
 
-// http://doc.spip.org/@action_editer_message_post_retirer
+function action_editer_message_post_vu($id_message, $id_auteur) {
+  spip_log("efface $id_message $id_auteur");
+	spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
+
+}
+
 function action_editer_message_post_retirer($id_message, $id_auteur) {
 	spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
 }
 
-// http://doc.spip.org/@action_editer_message_post_ajouter
 function action_editer_message_post_ajouter($id_message, $id_auteur) {
 	spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$id_auteur' AND id_message='$id_message'");
 	spip_abstract_insert('spip_auteurs_messages',
@@ -60,7 +65,6 @@ function action_editer_message_post_ajouter($id_message, $id_auteur) {
 		"('$id_auteur','$id_message','non')");
 }
 
-// http://doc.spip.org/@action_editer_message_post_envoyer
 function action_editer_message_post_envoyer($id_message, $statut) {
 
 	spip_query("UPDATE spip_messages SET statut=" . _q($statut) . " WHERE id_message='$id_message'");
@@ -100,7 +104,6 @@ function action_editer_message_post_nouveau($type, $dest='', $rv='')
 	redirige_par_entete(generer_url_ecrire('message_edit', "id_message=$id_message&new=oui&dest=$dest",true));
 }
 
-// http://doc.spip.org/@action_editer_message_post_vieux
 function action_editer_message_post_vieux($id_message)
 {
 	spip_query("UPDATE spip_messages SET titre=" . _q(_request('titre')) . ", texte=" . _q(_request('texte')) . " WHERE id_message='$id_message'");
diff --git a/ecrire/action/legender_auteur.php b/ecrire/action/legender_auteur.php
index 88eaee2cc00779b0ad5c7d2ee676590733448b74..8e80bacaa3468d727169627874cc9e7cc9553826 100644
--- a/ecrire/action/legender_auteur.php
+++ b/ecrire/action/legender_auteur.php
@@ -75,7 +75,8 @@ function action_legender_auteur_post($r)
 	$modif_login = false;
 	$old_login = $auteur['login'];
 
-	if (($new_login<>$old_login) AND $auteur['source'] == 'spip') {
+	if (($new_login<>$old_login)
+	AND ($auteur['source'] == 'spip' OR !$GLOBALS['ldap_present'])) {
 		if (admin_general($auteur_session['id_auteur'])) {
 			$acces = true;
 			if ($new_login) {
diff --git a/ecrire/exec/message.php b/ecrire/exec/message.php
index 70fbcd74e4916a67d8b4e1dd4f6cef6522d82359..cacf597880fce0cb6b5bd02a22d84ce7af854a74 100644
--- a/ecrire/exec/message.php
+++ b/ecrire/exec/message.php
@@ -19,13 +19,7 @@ include_spip('inc/mots');
 // http://doc.spip.org/@exec_message_dist
 function exec_message_dist()
 {
-global 
-  			$ajout_forum,
-$cherche_auteur,
-$connect_id_auteur,
-$forcer_dest,
-$id_message,
-$nouv_auteur;
+	global $cherche_auteur, $connect_id_auteur,$forcer_dest,$id_message, $nouv_auteur;
 
 	$id_message = intval($id_message);
 	$nouv_auteur = intval($nouv_auteur);
@@ -34,8 +28,8 @@ $nouv_auteur;
 	$row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
 
 	if ($row['type'] != "affich"){
-		$n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"));
-		if (!$n['n']) {
+		$res = spip_fetch_array(spip_query("SELECT vu FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"));
+		if (!$res) {
 			$commencer_page = charger_fonction('commencer_page', 'inc');
 			echo $commencer_page(_T('info_acces_refuse'));
 			debut_gauche();
@@ -44,13 +38,16 @@ $nouv_auteur;
 			echo fin_gauche(), fin_page();
 			exit;
 		}
+	// Marquer le message vu pour le visiteur
+		if ($res['vu'] != 'oui') {
+			include_spip('inc/headers');
+			redirige_par_entete(redirige_action_auteur("editer_message","$id_message/:$connect_id_auteur", 'message', "id_message=$id_message", true));
+		}
 	}
 
 	exec_affiche_message_dist($id_message,  $cherche_auteur, $nouv_auteur, $forcer_dest);
 }
 
-
-
 // http://doc.spip.org/@http_afficher_rendez_vous
 function http_afficher_rendez_vous($date_heure, $date_fin)
 {
@@ -413,9 +410,6 @@ function exec_affiche_message_dist($id_message, $cherche_auteur, $nouv_auteur, $
 	$lannee = annee($row['date_heure']);		
 
 	
-	// Marquer le message vu pour le visiteur
-	if ($type != "affich")
-		spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$connect_id_auteur'");
 
 	$commencer_page = charger_fonction('commencer_page', 'inc');
 	echo $commencer_page($titre, "accueil", "messagerie");