User Switching

Description

Cette extension vous permet de passer rapidement d’un compte à un autre sur WordPress d’un simple clic. Vous serez immédiatement déconnecté et reconnecté en tant que compte de votre choix. Cela est pratique pour aider les clients/clientes sur des sites WooCommerce, des sites d’adhésion, des environnements de test, ou pour tout site où les administrateurs/administratrices doivent passer d’un compte à l’autre.

Fonctionnalités

  • Changer de compte : changer instantanément pour n’importe quel compte depuis l’écran Comptes.
  • Revenir au compte de : revenir instantanément à votre compte d’origine.
  • Déconnexion temporaire : déconnectez-vous de votre compte, mais conservez la possibilité de vous reconnecter instantanément.
  • Compatible avec Multisite, WooCommerce, BuddyPress et bbPress.
  • Compatible avec la plupart des extensions de gestion des membres et des utilisateurs/utilisatrices.
  • Compatible avec la plupart des solutions d’authentification à deux facteurs (voir la FAQ pour plus d’informations).
  • Approuvé pour une utilisation sur des plateformes WordPress de niveau entreprise telles que Altis et WordPress VIP.

Note : User Switching prend en charge les versions de WordPress datant de moins de trois ans, ainsi que la version PHP 7.4 ou supérieure.

Sécurité

  • Uniquement les comptes ayant la possibilité de modifier d’autres comptes peuvent changer de compte. Par défaut, cela concerne uniquement les administrateurs/administratrices pour les installations monosites, et des super administrateurs/super administratrices pour les installations multisites.
  • Les mots de passe ne sont pas (et ne peuvent pas être) révélés.
  • Utilise le système d’authentification par cookie dans WordPress et se souvient du compte vers lequel on a basculé lorsque vous revenez en arrière.
  • Implémente le système de sécurité nonce dans WordPress, ce qui signifie qu’uniquement les personnes ayant l’intention de changer de compte peuvent effectuer cette action.
  • Prise en charge complète de la validation des sessions utilisateurs/utilisatrices lorsqu’elle est nécessaire.
  • Prise en charge complète du protocole HTTPS.
  • Soutenu par le programme de divulgation des vulnérabilités Patchstack

Utilisation

  1. Visitez le menu Comptes dans WordPress et vous verrez un lien Se connecter en tant que dans la liste des liens d’action pour chaque compte.
  2. Cliquez ici et vous serez immédiatement connecté à ce compte.
  3. Vous pouvez revenir à votre compte d’origine en cliquant sur le lien Revenir au compte de sur chaque page du tableau de bord ou dans le menu de votre profil dans la barre d’outils de WordPress.

Consultez la FAQ pour obtenir des informations sur la fonctionnalité Déconnexion temporaire.

Autres extensions

Je développe plusieurs autres extensions pour les développeurs/développeuses. Découvrez-les ici :

  • Query Monitor est le panneau des outils de développement pour WordPress.
  • WP Crontrol permet de voir et de contrôler ce qui se passe dans le système WP-Cron

Déclaration de confidentialité

User Switching n’envoie pas les données à des tiers, ni n’inclut des ressources tierces, et ne le fera jamais.

User Switching utilise des cookies de navigateur pour permettre aux utilisateurs de basculer vers un autre compte. Ces cookies fonctionnent selon le même mécanisme que les cookies d’authentification du cœur de WordPress, ce qui signifie que leurs valeurs contiennent le champ user_login de l’utilisateur en texte clair, ce qui doit être considéré comme une donnée personnelle pour des raisons de confidentialité et de réglementation (RGPD, CCPA, etc.). Les noms des cookies sont :

  • wordpress_user_sw_{COOKIEHASH}
  • wordpress_user_sw_secure_{COOKIEHASH}
  • wordpress_user_sw_olduser_{COOKIEHASH}

Consultez également la FAQ pour des questions relatives à la confidentialité et à la sécurité lors du passage d’un utilisateur/utilisatrice à un autre.

Déclaration d’accessibilité

User Switching vise à être entièrement accessible à tous ses utilisateurs/utilisatrices. Il applique les meilleures pratiques pour l’accessibilité web, génère un balisage sémantique et structuré, respecte les styles par défaut et les directives d’accessibilité de WordPress, utilise les API d’accessibilité fournies par WordPress et les navigateurs le cas échéant, et est entièrement accessible par le clavier.

User Switching doit respecter les Règles pour l’accessibilité des contenus Web (WCAG) 2.0 au niveau AA lorsqu’il est utilisé avec une version récente de WordPress, où la zone d’administration elle-même respecte ces directives. Si vous avez rencontré ou identifié un problème d’accessibilité dans User Switching, veuillez ouvrir un fil de discussion dans le forum de support de l’extension User Switching et je m’en occuperai rapidement.

Captures d’écran

  • Le lien Se connecter en tant que sur l’écran des utilisateurs
  • Le lien Se connecter en tant que sur le profil d’un utilisateur/utilisatrice

FAQ

Est-ce que cette extension fonctionne avec PHP 8 ?

Oui, il est activement testé et fonctionne jusqu’à PHP 8.4.

Que signifie « Déconnexion temporaire » ?

Déconnexion temporaire vous déconnecte de votre compte, mais conserve votre identifiant utilisateur dans un cookie d’authentification, vous permettant ainsi de revenir directement sans avoir à vous reconnecter manuellement. Cela revient à dire qu’il n’y a aucun utilisateur et qu’il est possible de revenir en arrière.

Le lien Déconnexion temporaire se trouve dans le menu de votre profil dans la barre d’outils de WordPress. Une fois que vous vous êtes déconnecté, vous verrez un lien Revenir au compte de à plusieurs endroits :

  • Dans le pied de page de votre site
  • Sur l’écran de connexion
  • Dans le widget « Meta »

Cette extension fonctionne-t-elle avec WordPress Multisite ?

Oui, et vous pourrez également changer de compte depuis la page des comptes dans l’administration réseau.

Cette extension fonctionne-t-elle avec WooCommerce ?

Oui, et vous pourrez également changer de compte depuis différents écrans d’administration de WooCommerce tout en étant connecté en tant que gestionnaire de boutique ou utilisateur administratif.

Cette extension fonctionne-t-elle avec BuddyPress ?

Oui, et vous pourrez également changer de compte depuis les pages de profil des membres et la page de la liste des membres.

Cette extension fonctionne-t-elle avec bbPress ?

Oui, et vous pourrez également changer de compte depuis des pages de profil des membres.

Cette extension fonctionne-t-elle si mon site utilise une extension d’authentification à deux facteurs ?

Oui, en grande partie.

Une exception dont je suis conscient est Duo Security. Si vous utilisez cette extension, vous devez installer l’extension User Switching for Duo Security qui empêchera l’apparition de l’affichage de l’authentification à deux facteurs lorsque vous passez d’un compte à un autre.

Quelle permission un utilisateur/utilisatrice doit-il/doit-elle avoir afin de pouvoir changer de compte ?

Un utilisateur/utilisatrice a besoin des permissions edit_users pour changer de compte. Par défaut, seuls les administrateurs/administratrices possèdent cette permission et, lorsque le mode Multisite est activé, uniquement les super administrateurs/administratrices ont cette permission.

Plus précisément, un utilisateur/utilisatrice doit avoir la permission de modifier l’utilisateur/utilisatrice cible afin de pouvoir passer à celui-ci. Cela signifie que si vous avez un mappage personnalisé des permissions des utilisateurs/utilisatrices qui utilise les permissions edit_users ou edit_user pour affecter la permission des utilisateurs/utilisatrices à modifier d’autres utilisateurs/utilisatrices, alors User Switching doit en tenir compte.

Les administrateurs/administratrices réguliers sur les installations Multisite peuvent-ils changer de compte ?

Non. Vous pouvez cependant l’activer en installant l’extension User Switching for Regular Admins.

L’habilité de changer de compte peut-elle être accordée à d’autres utilisateurs ou rôles ?

Oui. La méta-permission switch_users peut être explicitement accordée à un utilisateur/utilisatrice ou à un rôle pour leur permettre de changer de compte, peu importe s’ils possèdent ou non la permission edit_users. Pour des raisons pratiques, l’utilisateur/utilisatrice ou le rôle devra également posséder la permission list_users pour pouvoir accéder au menu Compte dans la zone d’administration de WordPress.

add_filter( 'user_has_cap', function( $allcaps, $caps, $args, $user ) {
    if ( 'switch_to_user' === $args[0] ) {
        if ( my_condition( $user ) ) {
            $allcaps['switch_users'] = true;
        }
    }
    return $allcaps;
}, 9, 4 );

Notez que cette opération doit avoir lieu avant le filtrage des permissions d’User Switching, d’où la priorité de 9.

Les utilisateurs/utilisatrices peuvent-ils se voir refuser la possibilité de changer de compte ?

Oui. Les permissions des utilisateurs/utilisatrices dans WordPress peuvent être définies sur false pour les refuser. Refuser la permission switch_users empêche l’utilisateur/utilisatrice de changer de compte, même s’il a la permission edit_users.

add_filter( 'user_has_cap', function( $allcaps, $caps, $args, $user ) {
    if ( 'switch_to_user' === $args[0] ) {
        if ( my_condition( $user ) ) {
            $allcaps['switch_users'] = false;
        }
    }
    return $allcaps;
}, 9, 4 );

Notes :

  • Cette opération doit avoir lieu avant le filtrage des permissions d’User Switching, d’où la priorité de 9.
  • L’ID de l’utilisateur/utilisatrice cible peut être trouvé dans $args[2].

Puis-je ajouter un lien personnalisé « Se connecter en tant que » dans ma propre extension ou mon propre thème ?

Oui. Utilisez la méthode user_switching::maybe_switch_url() pour cela. Elle prend en charge l’authentification et renvoie une URL protégée par un jeton de chiffrement nonce permettant à l’utilisateur/utilisatrice actuel de basculer vers le compte fourni.

if ( method_exists( 'user_switching', 'maybe_switch_url' ) ) {
    $url = user_switching::maybe_switch_url( $target_user );
    if ( $url ) {
        printf(
            '<a href="%1$s">Switch to %2$s</a>',
            esc_url( $url ),
            esc_html( $target_user->display_name )
        );
    }
}

Si vous souhaitez spécifier l’URL vers laquelle l’utilisateur/utilisatrice est redirigé après avoir changé de compte, ajoutez un paramètre redirect_to à l’URL comme ceci :

if ( method_exists( 'user_switching', 'maybe_switch_url' ) ) {
    $url = user_switching::maybe_switch_url( $target_user );
    if ( $url ) {
        // Redirect to the home page after switching:
        $redirect_to = home_url();
        printf(
            '<a href="%1$s">Switch to %2$s</a>',
            esc_url( add_query_arg(
                'redirect_to',
                rawurlencode( $redirect_to ),
                $url
            ) ),
            esc_html( $target_user->display_name )
        );
    }
}

Le code ci-dessus fonctionne également pour afficher un lien permettant de revenir au compte d’origine, mais si vous souhaitez un lien explicite pour cela, vous pouvez utiliser le code suivant :

if ( method_exists( 'user_switching', 'get_old_user' ) ) {
    $old_user = user_switching::get_old_user();
    if ( $old_user ) {
        printf(
            '<a href="%1$s">Switch back to %2$s</a>',
            esc_url( user_switching::switch_back_url( $old_user ) ),
            esc_html( $old_user->display_name )
        );
    }
}

Puis-je déterminer si l’utilisateur/utilisatrice actuel a accédé à son compte’?

Oui. Utilisez la fonction current_user_switched() pour cela. Si l’utilisateur/utilisatrice actuel est passé dans son compte à partir d’un autre, cette fonction renvoie un objet WP_User pour l’utilisateur/utilisatrice d’origine, sinon elle renvoie un objet false.

if ( function_exists( 'current_user_switched' ) ) {
    $switched_user = current_user_switched();
    if ( $switched_user ) {
        // User is logged in and has switched into their account.
        // $switched_user is the WP_User object for their originating user.
    }
}

Puis-je journaliser chaque fois qu’un utilisateur passe à un autre compte ?

Vous pouvez installer une extension de suivi des actions telle que Simple History, WP Activity Log ou Stream, qui offrent tous un support intégré pour User Switching et journalisent une entrée lorsqu’un utilisateur/utilisatrice passe à un autre compte.

Est-ce que cette extension permet à un utilisateur/utilisatrice d’incriminer un autre utilisateur/utilisatrice pour une action ?

Potentiellement oui, mais User Switching inclut des protections de sécurité pour cela et il existe d’autres précautions que vous pouvez prendre en tant qu’administrateur/administratrice du site :

  • Vous pouvez installer une extension de suivi des actions telle que Simple History, WP Activity Log ou Stream, qui offrent tous un support intégré pour User Switching et journalisent une entrée lorsqu’un utilisateur/utilisatrice passe à un autre compte.
  • User Switching stocke l’ID du compte d’origine dans la nouvelle session utilisateur WordPress pour le compte vers lequel ils ont basculé. Bien que cette session ne persiste pas par défaut lorsqu’ils reviennent ensuite, un enregistrement de cet ID sera disponible si votre serveur de base de données a activé la journalisation des requêtes.
  • User Switching stocke le nom de connexion de l’utilisateur/utilisatrice d’origine dans un cookie d’authentification (voir la Déclaration de confidentialité pour plus d’informations). Si les journaux d’accès de votre serveur stockent les données des cookies, il y aura un enregistrement de ce nom de connexion (avec l’adresse IP) pour chaque demande d’accès.
  • User Switching déclenche une action lorsqu’un utilisateur/utilisatrice change de compte, se déconnecte temporairement ou revient en arrière (voir ci-dessous). Vous pouvez utiliser ces actions pour effectuer une journalisation supplémentaire à des fins de sécurité, en fonction de vos prérequis.

Un ou plusieurs des éléments ci-dessus devraient vous permettre de corréler une action avec l’utilisateur d’origine lorsqu’un utilisateur/utilisatrice change de compte, si nécessaire.

Gardez à l’esprit que même sans l’extension User Switching, tout utilisateur/utilisatrice ayant la possibilité de modifier un autre utilisateur/utilisatrice peut toujours lui reprocher une action, par exemple en changeant son mot de passe et en se connectant manuellement à ce compte. Si vous vous inquiétez des abus de la part des utilisateurs/utilisatrices, vous devez être particulièrement vigilant lorsque vous leur accordez des droits d’administration.

Cette extension m’avertit-elle si j’essaie de me connecter à un compte déjà utilisé par quelqu’un d’autre ?

Oui. Lorsque cela se produit, un message vous demandera de confirmer si vous souhaitez continuer à vous connecter au compte concerné.

Cette fonctionnalité est utile si vous avez plusieurs utilisateurs/utilisatrices sur votre site qui peuvent se connecter à d’autres comptes en même temps, par exemple une équipe d’agents de support.

Puis-je changer de compte directement depuis la barre d’outils d’administration ?

Oui, il existe une extension complémentaire tierce pour cela : Admin Bar User Switching.

Y a-t-il des actions d’extension appelées lorsqu’un utilisateur change de compte ?

Oui. Lorsqu’un utilisateur/utilisatrice passe à un autre compte, le crochet switch_to_user est appelé :

/**
 * Fires when a user switches to another user account.
 *
 * @since 0.6.0
 * @since 1.4.0 The `$new_token` and `$old_token` parameters were added.
 *
 * @param int    $user_id     The ID of the user being switched to.
 * @param int    $old_user_id The ID of the user being switched from.
 * @param string $new_token   The token of the session of the user being switched to. Can be an empty string
 *                            or a token for a session that may or may not still be valid.
 * @param string $old_token   The token of the session of the user being switched from.
 */
do_action( 'switch_to_user', $user_id, $old_user_id, $new_token, $old_token );

Lorsqu’un utilisateur/utilisatrice revient à son compte d’origine, le crochet switch_back_user est appelé :

/**
 * Fires when a user switches back to their originating account.
 *
 * @since 0.6.0
 * @since 1.4.0 The `$new_token` and `$old_token` parameters were added.
 *
 * @param int       $user_id     The ID of the user being switched back to.
 * @param int|false $old_user_id The ID of the user being switched from, or false if the user is switching back
 *                               after having been switched off.
 * @param string    $new_token   The token of the session of the user being switched to. Can be an empty string
 *                               or a token for a session that may or may not still be valid.
 * @param string    $old_token   The token of the session of the user being switched from.
 */
do_action( 'switch_back_user', $user_id, $old_user_id, $new_token, $old_token );

Lorsqu’un utilisateur/utilisatrice se déconnecte temporairement, le crochet switch_off_user est appelé :

/**
 * Fires when a user switches off.
 *
 * @since 0.6.0
 * @since 1.4.0 The `$old_token` parameter was added.
 *
 * @param int    $old_user_id The ID of the user switching off.
 * @param string $old_token   The token of the session of the user switching off.
 */
do_action( 'switch_off_user', $old_user_id, $old_token );

Lorsqu’un utilisateur/utilisatrice passe à un autre compte, se déconnecte ou revient, le filtre user_switching_redirect_to est appliqué à l’emplacement vers lequel il est redirigé :

/**
 * Filters the redirect location after a user switches to another account or switches off.
 *
 * @since 1.7.0
 *
 * @param string       $redirect_to   The target redirect location, or an empty string if none is specified.
 * @param string|null  $redirect_type The redirect type, see the `user_switching::REDIRECT_*` constants.
 * @param WP_User|null $new_user      The user being switched to, or null if there is none.
 * @param WP_User|null $old_user      The user being switched from, or null if there is none.
 */
return apply_filters( 'user_switching_redirect_to', $redirect_to, $redirect_type, $new_user, $old_user );

De plus, User Switching respecte les filtres suivants du cœur de WordPress, le cas échéant :

  • login_redirect lors du passage à un autre compte.
  • logout_redirect lors de la déconnexion temporaire.

Comment puis-je signaler un bogue de sécurité ?

Vous pouvez signaler des bogues de sécurité via le programme officiel de divulgation des vulnérabilités d’User Switching sur Patchstack. L’équipe de Patchstack aide à valider, trier et traiter les vulnérabilités de sécurité.

Acceptez-vous des dons ?

J’accepte les parrainages via le programme GitHub Sponsors et tout soutien que vous pouvez apporter m’aidera à maintenir cette extension et à la garder gratuite pour tout le monde.

Avis

6 décembre 2024
I integrate this plugin with BuddyBoss, WooCommerce, and some of my custom dashboards. It’s a very handy plugin and has saved me a lot of time by providing features that I would otherwise have to develop from scratch.
10 novembre 2024
Very happy with this plugin! It’s simple to use and works flawlessly, making my tasks easier and more efficient.
10 novembre 2024
I’m very pleased with how this plugin works! It’s easy to set up, runs smoothly, and delivers exactly what it promises. The functionality has been reliable, with no issues or glitches so far. It’s become an essential part of my workflow – highly recommended!
21 octobre 2024
An excellent plugin which is very easy to use and a must for sites with multiple types of users when you need to test things. Well written too and good for developers to work with if needed. Highly recommended.
19 septembre 2024
I can’t praise this plugin enough. It’s an invaluable tool for admins, used for everything from troubleshooting to placing orders in a customer’s name. Huge thanks to the plugin author for creating such a useful tool for the community. NOTE: I have not used this plugin with Cloudflare. Some users report ‘bad gateway’ error.
Lire les 235 avis

Contributeurs/contributrices & développeurs/développeuses

« User Switching » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.

Contributeurs

“User Switching” a été traduit dans 48 locales. Remerciez l’équipe de traduction pour ses contributions.

Traduisez « User Switching » dans votre langue.

Le développement vous intéresse ?

Parcourir le code, consulter le SVN dépôt, ou s’inscrire au journal de développement par RSS.

Journal

1.9.2 (16 April 2025)

  • Confirms support for WordPress 6.8
  • Minor code quality improvements

1.9.1 (5 December 2024)

  • Fixes the wp_login and wp_logout parameter usage which could cause a fatal error when passed an unexpected value.

1.9.0 (21 November 2024)

  • Introduces a confirmation message when a user attempts to switch into an account which somebody else is already switched into. Helpful for teams of support engineers who switch into customer accounts.
  • Confirms support for WordPress 6.7.
  • Confirms support for PHP 8.4.
  • Various code quality improvements.

1.8.0 (22 July 2024)

  • Ajoute un lien « Revenir au compte de » à certains messages d’accès refusé dans la zone d’administration.
  • Confirms support for WordPress 6.6.

1.7.3 (21 February 2024)

  • Confirms support for PHP 8.3
  • Fixes compatibility with BuddyPress version 12
  • Adds configuration for the Live Preview feature on wordpress.org

1.7.2 (16 November 2023)

  • Confirm support for WordPress 6.4
  • Reinstate the missing plugin readme file

1.7.1 (16 November 2023)

  • Fix the redirect type parameter passed to the user_switching_redirect_to filter
  • Increase the minimum supported version of PHP to 7.4

1.7.0 (30 July 2022)

  • Redirect to the current post, term, user, or comment being edited when switching off
  • Clean up some user-facing messages
  • Appliquez un style de base au lien « Revenir au compte de » qui apparaît dans le pied de page
  • Use a better placement for the Switch To menu on bbPress profiles
  • Use a more appropriate HTTP response code if switching off fails
  • Exclude .editorconfig from dist ZIP

1.6.0 (24 June 2022)

  • Add a ‘Switch To’ link to the order screen in WooCommerce
  • Ajoutez un lien « Revenir au compte de » à l’écran mon compte et à l’écran de connexion dans WooCommerce

1.5.8 (2 October 2021)

  • Avoid a fatal if the interim-login query parameter is present on a page other than wp-login.php.

Earlier versions

For the changelog of earlier versions, refer to the releases page on GitHub.