-
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.
One exception I’m aware of is Duo. If you’re using Duo Universal or Duo Security then you should install the User Switching for Duo add-on plugin which will prevent the two-factor authentication prompt from appearing when you switch between users.
-
Quelle permission un utilisateur/utilisatrice doit-il/doit-elle avoir afin de pouvoir changer de compte ?
-
Un utilisateur/utilisatrice a besoin des permissions
edit_userspour 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_usersouedit_userpour 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_userspeut ê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 permissionedit_users. Pour des raisons pratiques, l’utilisateur/utilisatrice ou le rôle devra également posséder la permissionlist_userspour 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
falsepour les refuser. Refuser la permissionswitch_usersempêche l’utilisateur/utilisatrice de changer de compte, même s’il a la permissionedit_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].
- Cette opération doit avoir lieu avant le filtrage des permissions d’User Switching, d’où la priorité de
-
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 objetWP_Userpour 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_userest 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_userest 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_userest 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_toest 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_redirectlors du passage à un autre compte.logout_redirectlors 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.
US