diff --git a/ecrire/auth/spip.php b/ecrire/auth/spip.php
index 5cb50f9ed7b1cad80354a411f0963030a071817a..456e038ef4ed8279d447988ab07d146d27879221 100644
--- a/ecrire/auth/spip.php
+++ b/ecrire/auth/spip.php
@@ -194,4 +194,57 @@ function auth_spip_modifier_pass($login, $new_pass, $id_auteur){
 
 }
 
+/**
+ * Synchroniser les fichiers htpasswd
+ * 
+ * @param int $id_auteur
+ * @param array $champs
+ * @param array $options
+ *	all=>true permet de demander la regeneration complete des acces apres operation en base (import, upgrade)
+ * @return void 
+ */
+function auth_spip_synchroniser_distant($id_auteur, $champs, $options = array()){
+	// si un login, pass ou statut a ete modifie
+	// regenerer les fichier htpass
+	if (isset($champs['login'])
+		OR isset($champs['pass'])
+		OR isset($champs['statut'])
+		OR (isset($options['all']) AND $options['all'])
+	) {
+
+		$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
+		$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
+
+		// Cette variable de configuration peut etre posee par un plugin
+		// par exemple acces_restreint ;
+		// si .htaccess existe, outrepasser spip_meta
+		if (($GLOBALS['meta']['creer_htpasswd'] != 'oui')
+		AND !@file_exists($htaccess)) {
+			spip_unlink($htpasswd);
+			spip_unlink($htpasswd."-admin");
+			return;
+		}
+
+		# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
+		# de devenir redacteur le cas echeant (auth http)... a nettoyer
+		// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
+
+		$p1 = ''; // login:htpass pour tous
+		$p2 = ''; // login:htpass pour les admins
+		$s = sql_select("login, htpass, statut", "spip_auteurs", sql_in("statut",  array('1comite','0minirezo','nouveau')));
+		while ($t = sql_fetch($s)) {
+			if (strlen($t['login']) AND strlen($t['htpass'])) {
+				$p1 .= $t['login'].':'.$t['htpass']."\n";
+				if ($t['statut'] == '0minirezo')
+					$p2 .= $t['login'].':'.$t['htpass']."\n";
+			}
+		}
+		if ($p1) {
+			ecrire_fichier($htpasswd, $p1);
+			ecrire_fichier($htpasswd.'-admin', $p2);
+			spip_log("Ecriture de $htpasswd et $htpasswd-admin");
+		}
+	}
+}
+
 ?>
\ No newline at end of file
diff --git a/ecrire/base/import_all.php b/ecrire/base/import_all.php
index 1f1276a0c55e00e528bd651f834eb088a8b66505..aa8360b2b9ba9b375bde77fa6e54f01707e2be61 100644
--- a/ecrire/base/import_all.php
+++ b/ecrire/base/import_all.php
@@ -82,7 +82,10 @@ function base_import_all_dist($titre='', $reprise=false)
 	import_all_fin($request);
 	include_spip('inc/rubriques');
 	calculer_rubriques();
-	if (!$res) ecrire_acces();	// Mise a jour du fichier htpasswd
+	if (!$res){
+		include_spip('inc/auth');
+		auth_synchroniser_distant(); // Mise a jour du fichier htpasswd
+	}
 	// revenir a l'accueil pour finir
 	affiche_progression_javascript('100 %', 0);
 }
diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php
index c91e184466337c5d0b3cfecd5e9476ff9ecfcb2e..bbeaad1b075f40488ffbbe50742582b3a5bd8a37 100644
--- a/ecrire/base/upgrade.php
+++ b/ecrire/base/upgrade.php
@@ -35,8 +35,8 @@ function base_upgrade_dist($titre='', $reprise='')
 	spip_unlink(_DIR_TMP.'charger_plugins_options.php');
 	spip_unlink(_DIR_TMP.'verifier_plugins.txt');
 
-	include_spip('inc/acces');
-	ecrire_acces();
+	include_spip('inc/auth');
+	auth_synchroniser_distant();
 	$config = charger_fonction('config', 'inc');
 	$config();
 }
diff --git a/ecrire/inc/acces.php b/ecrire/inc/acces.php
index d97d2bde2cff20c68b99dff915476bbbad212417..8f3f83113a9636a1605340a2bbd142b5ef897906 100644
--- a/ecrire/inc/acces.php
+++ b/ecrire/inc/acces.php
@@ -147,47 +147,6 @@ function initialiser_sel() {
 	else return "";
 }
 
-// Cette fonction ne sert qu'a la connexion en mode http_auth.non LDAP
-// Son role est de creer le fichier htpasswd
-// Voir le plugin "acces restreint"
-// http://doc.spip.org/@ecrire_acces
-function ecrire_acces() {
-	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
-	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
-
-	// Cette variable de configuration peut etre posee par un plugin
-	// par exemple acces_restreint ;
-	// si .htaccess existe, outrepasser spip_meta
-	if (($GLOBALS['meta']['creer_htpasswd'] != 'oui')
-	AND !@file_exists($htaccess)) {
-		spip_unlink($htpasswd);
-		spip_unlink($htpasswd."-admin");
-		return;
-	}
-
-	# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
-	# de devenir redacteur le cas echeant (auth http)... a nettoyer
-	// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
-
-	if (spip_connect_ldap()) return; // hum, il faudrait generaliser cela
-	$p1 = ''; // login:htpass pour tous
-	$p2 = ''; // login:htpass pour les admins
-	$s = sql_select("login, htpass, statut", "spip_auteurs", sql_in("statut",  array('1comite','0minirezo','nouveau')));
-	while ($t = sql_fetch($s)) {
-		if (strlen($t['login']) AND strlen($t['htpass'])) {
-			$p1 .= $t['login'].':'.$t['htpass']."\n";
-			if ($t['statut'] == '0minirezo')
-				$p2 .= $t['login'].':'.$t['htpass']."\n";
-		}
-	}
-	if ($p1) {
-	  ecrire_fichier($htpasswd, $p1);
-	  ecrire_fichier($htpasswd.'-admin', $p2);
-	  spip_log("Ecriture de $htpasswd et $htpasswd-admin");
-	}
-}
-
-
 // http://doc.spip.org/@generer_htpass
 function generer_htpass($pass) {
 	global $htsalt;
diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php
index a872b0ad4cb4168cdd93d134e012e79ddf6e5402..78db463a29247dc258988aecedef870b2298437b 100644
--- a/ecrire/inc/auth.php
+++ b/ecrire/inc/auth.php
@@ -487,13 +487,24 @@ function auth_modifier_pass($auth_methode, $login, $new_pass, $id_auteur){
  * donnee lorsque des modifications sont faites dans la base auteur
  *
  * @param string $auth_methode
+ *   ici true permet de forcer la synchronisation de tous les acces pour toutes les methodes
  * @param int $id_auteur
  * @param array $champs
- * @return bool
+ * @param array $options
+ * @return void
  */
-function auth_synchroniser_distant($auth_methode, $id_auteur, $champs){
+function auth_synchroniser_distant($auth_methode=true, $id_auteur=0, $champs=array()){
 	$args = func_get_args();
-	return auth_administrer('synchroniser_distant',$args);
+	if ($auth_methode===true){
+		$args[] = array('all'=>true); // ajouter une option all=>true pour chaque auth
+		foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
+			array_shift($args);
+			array_unshift($args,$methode);
+			auth_administrer('synchroniser_distant',$args);
+		}
+	}
+	else
+		auth_administrer('synchroniser_distant',$args);
 }
 
 
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 17b51c999661ed4ed1f53cb160e02f3398df23ae..36dcd5fb6984212efea2da2608225a5aeac73c9a 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -264,15 +264,6 @@ function revision_auteur($id_auteur, $c=false) {
 	$auth_methode = sql_getfetsel('source','spip_auteurs','id_auteur='.intval($id_auteur));
 	include_spip('inc/auth');
 	auth_synchroniser_distant($auth_methode, $id_auteur, $c);
-
-	// .. mettre a jour les fichiers .htpasswd et .htpasswd-admin
-	if (isset($c['login'])
-	OR isset($c['pass'])
-	OR isset($c['statut'])
-	) {
-		include_spip('inc/acces');
-		ecrire_acces();
-	}
 	
 	// Si on change login ou mot de passe, deconnecter cet auteur,
 	// sauf si c'est nous-meme !
diff --git a/ecrire/install/etape_fin.php b/ecrire/install/etape_fin.php
index 01881474a80210500a56f88a88f8fdd1bcea9f45..120e148e58c3d9d72cabd543845391c842ef9098 100644
--- a/ecrire/install/etape_fin.php
+++ b/ecrire/install/etape_fin.php
@@ -20,7 +20,8 @@ include_spip('inc/acces');
 // http://doc.spip.org/@install_etape_fin_dist
 function install_etape_fin_dist()
 {
-	ecrire_acces();
+	include_spip('inc/auth');
+	auth_synchroniser_distant();
 
 	$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP);
 	if (file_exists(_FILE_CHMOD_TMP)) {