Incarner

Permet aux webmestres de se connecter en tant qu’un autre auteur très facilement. Pendant la phase de développement, c’est très pratique pour diagnostiquer des problèmes d’autorisations sans avoir à se reloguer tout le temps, ou, sur un site fortement personnalisé, pour aider un utilisateur en lui décrivant que faire « tel qu’il voit le site ».

Ce plugin permet de se loguer en tant qu’un autre autre auteur sans saisir de mot de passe. Cette opération n’est autorisée qu’aux webmestres.

Sur la page privée d’un auteur

On ajoute un lien « se connecter en tant que XX » sur chaque page auteur dans l’espace privé, ainsi qu’un lien « redevenir XX » côté public, qui permet de redevenir le webmestre qu’on était à la base.

Quand on se connecte en tant qu’un autre auteur, on garde l’autorisation d’utiliser les outils de debug var_mode=inclure et var_mode=debug, ainsi que l’autorisation de se connecter en tant que quelqu’un d’autre quand on le souhaite. On peut même se déconnecter totalement, sans perdre ces autorisations, ce qui est pratique pour reproduire des problèmes qui ne se posent que pour les visiteurs anonymes.
Ce « super-pouvoir » est révoqué automatiquement après 1h d’inactivité.

On peut aussi changer d’utilisateur en visitant l’url spip.php?action=incarner&login=toto. Et pour finir et revenir à son propre compte, on peut faire de même avec son propre login.

Sur la page publique d’un article ou d’un autre objet

À partir de la version 1.5.1, on peut aussi bénéficier de ce comportement sur la page publique d’un article ou d’un objet d’un autre type, afin de se connecter en tant que son auteur.

Pour obtenir ce fonctionnement et préciser sur quels types d’objets est-ce qu’on veut cette fonctionnalité, il faut définir dans votre fichier d’options la constante _INCARNER_OBJET_ID_OBJET_COURANT pour indiquer quel est le type d’objet et le nom de sa clé. Le lien « se connecter en tant que XX » apparaît alors sur les pages publiques des objets éditoriaux de ce type, et permet de se connecter en tant que le premier auteur de l’objet.

Exemple :

define ('_INCARNER_OBJET_ID_OBJET_COURANT', 'article|id_article');

Attention

S’il n’est pas un trou de sécurité, ce plugin est un outil de débug destiné à être utilisé sur des sites en développement. Ne l’activez-pas sur des sites en production !

Discussion

7 discussions

  • Déjà merci pour ce beau plugin trèèèès utile ;-)

    Niveau sécurité peut on ajouter ces améliorations qui sont nécessaires surtout sans mode parano actif :

    -  Il faudrait ajouter l’attribut httpOnly sur le cookie spip_cle_incarner, sinon avec une XSS : impact++
    -  Il serait plus prudent de générer/fixer ce cookie lors du premier clique de la session sur un bouton « se connecter en tant que »

    Encore merci

    Répondre à ce message

  • 9

    Bonjour,

    j’ai remarquer que l’on peut pas se connecter si le profil n’a pas de mot de passe en bdd.
    On peut corrigé cela en mettant un mot de passe « bidon » ?

    Cordialement.

    • Bonjour,

      Merci pour le retour, ça devrait être corrigé dans la version du jour, la 1.3.5.

    • Re,

      Merci, j’ai vu les commit, en fait on peut plus se loguer si pas de mot de passe déjà sur le profil ?

    • Avec le lien fourni par le plugin on devrait pouvoir maintenant (si l’auteur a un login). Mais sans ça je ne pense pas que le formulaire de login de SPIP permette de ne pas saisir le mot de passe. On pouvait avant ?

    • Je ne sais plus, J’avais en tete de faire ça https://core.spip.net/projects/spip/repository/revisions/24130/entry/branches/spip-3.1/ecrire/action/inscrire_auteur.php#L84

      Cela met un code aléatoire dans le profil et on peut se loguer quand même .

    • Pour info j’ai pu enregistrer un auteur (page auteur) sans problème avec seulement le login, sans mot de passe (SPIP 3.2.3)

    • erratum : on peut enregistrer la page auteur avec login sans mot de passe, mais pas se logguer sous ce profil dans SPIP sans mot de page, le clic sur « valider » n’a pas d’effet dans la page de connexion.

    • Oui c’est ce que je dis, moi je veux pouvoir me loguer sur un compte qui n’a pas de mot de passe.

    • en l’état, une astuce consiste à créer un ’mot de passe’ en tapant la touche espace autant de fois que de caractères requis pour le mot de passe (paramétré suivant le site). Cela fonctionne, on peut ensuite se logguer virtuellement avec le plugin à ce compte (qui a donc pour mdp, x fois un espace).

    • problème résolu avec la mise à jour, merci à vous.

    Répondre à ce message

  • 7

    Bonsoir,

    pouvez vous me dire la différence avec https://contrib.spip.net/Change-Statut

    j’arrive pas a comprendre ...

    • j’ai l’impression que ce dernier plugin ne marche que pour le privé.… mais effectivement cela pourrais être bien de fusionner.

    • Le fonctionnement est fondamentalement différent. « Change statut » propose de changer le statut de l’auteur avec lequel on s’est logué, alors que « Incarner » permet de se loguer avec un autre compte temporairement.
      Comme ça ne fait pas la même chose, je vois mal comment les fusionner, mais c’est peut-être juste un manque d’imagination de ma part :-)

      « Incarner » sert mieux mes besoins parce que le système d’autorisations de SPIP n’utilise le système de statut des auteurs que partiellement. Au fond des choses, les autorisations sont calculées auteur par auteur, et le statut n’est qu’un des paramètres pris en compte.
      Il y a des bugs qui se produisent pour certains auteurs mais pas pour d’autres, il faut alors tester en se loguant avec le bon auteur, changer de statut ne suffit pas pour reproduire le problème.

      Par exemple, seuls les auteurs d’un article peuvent le voir quand il est « en cours de rédaction », les autres rédacteurs, qui ont pourtant le même statut ne le voient pas.
      Imaginons qu’un rédacteur à un problème avec un article « en cours de rédaction », et qu’il en parle au webmestre. Le plugin « Incarner » permet alors au webmestre de facilement se loguer à la place du rédac en question et de voir le problème par lui-même. Avec « Change statut » le webmestre peut facilement devenir rédacteur, mais il ne pourra pas pour autant voir la même chose que le rédac qui a un souci.

    • Bonjour bystrano,

      pour faire suite à votre dernier message, c’est exactement le genre d’utilisation que j’aimerai mettre en place sur mon site sur lequel nous avons développer une platform ou les utilisateurs peuvent se loggé et fare une multitude de choses, mais ce plugin serait super en prod, pour pouvoir aider les utilisateurs qui ont des soucis, mais votre commentaire en fin de description me fait douter si l’utilisation de ce plugin en prod :

      S’il n’est pas à priori un trou de sécurité, ce plugin est un outil de débuggage destiné à être utilisé sur des sites en développement, ne l’activez-pas sur des sites en production !

      Pensez vous que ce plugin peut être utilisé dans mon cas ?

      Merci,

    • Perso il m’arrive de l’utiliser en prod et je n’ai jamais eu de problème.

      J’ai mis l’avertissement parce que jouer avec les comptes utilisateurs est à priori délicat en matière de sécurité, et qu’à ma connaissance, le code n’a pas été audité par un-e spécialiste. J’ai fait au mieux selon mes compétences, mais il serait bien d’avoir au moins un avis extérieur avant d’utiliser le plugin sur des sites sensibles...

    • Merci pour l’info je vais tester ce plugin et serait ravi de partager mon retour d’experience =)

    • Comme promis voilà mon retour d’expérience :)

      Super plugin qui nous aide énormément tous les jours. Nous avons du simplement changer l’url de retour du bouton « Redevenir xxx », mais rien de bien méchant. Est il possible depuis la page public de savoir si la personne (qui se fait passer pour un autre utilisateur) est un admin et de pouvoir récupérer son id_auteur original ?

      Nous pensions mettre des options dans la page qui serait accessible aux admins qui utilisent l’option incarner.

      Merci par avance pour votre aide,

    • Content de savoir que le plugin vous sert bien !

      Pour récupérer l’id_auteur original, c’est un peu compliqué, mais je pense que ça devrait être possible. Le faire en php est assez facile, il suffit de faire comme dans le code du plugin, au moment où on ajoute le lien « redevenir xx » : https://zone.spip.org/trac/spip-zone/browser/_plugins_/incarner/trunk/incarner_pipelines.php#L51.

      Par contre dans un squelette c’est plus épineux, parce qu’il faut lire un cookie. Un truc du style devrait donner l’id_auteur d’origine :

      [(#EVAL{$_COOKIE\['spip_cle_incarner'\]}|array_search{#CONFIG{incarner/cles}})]

      Mais le souci c’est que ça ne sera évalué que la première fois, puis mis en cache. Les visiteurs suivants verront le même résultat, même s’ils n’en ont pas le droit !!

      Il y a une astuce qui devrait pouvoir régler ça en forçant un nouveau cache pour chaque valeur de ce cookie : https://nota-bene.org/Cookies-et-SPIP-la-ruse-de-sioux
      Il faudrait alors ajouter ce code dans config/mes_options.php :

      $GLOBALS['marqueur'] .= ':'.$_COOKIE['spip_cle_incarner'];

      Voilà, ça devrait te donner des pistes, à toi de voir si ça fonctionne :-) N’hésite pas à redemander si ça coince !

    Répondre à ce message

  • 2

    Petite remarque, j’en ai besoin principalement dans le privé et il n’est pas fait mention que l’on est sur un compte incarné.

    Ce serait bien d’avoir un bandeau le signalant non ?

    Et permettant d’avoir les mêmes deux boutons que dans le public ?

    Répondre à ce message

  • 2

    Plugin fort utile.

    Une fonctionnalité que l’on retrouve de plus en plus dans les logiciels et c’est bien chouette de l’avoir.

    Pour info, j’ai également eu des problème d’erreur 500 pour la fonction random_bytes même avec la dernière version.

    Mon hébergement ne remplissant pas les conditions avec de vieilles versions de PHP (pas de libsodium, libmcrypt et un Plesk avec un open_basedir interdisant la lecture de /dev/urandom).

    Par contre, je peux changer l’open_basedir et ai donc ajouté /dev/urandom à la conf.

    Juste pour info, si quelqu’un rencontre le même soucis

    Répondre à ce message

  • 5

    Bonjour,

    Au moment d’incarner un autre auteur, il s’affiche sur l’écran le message suivant :

    Fatal error : Call to undefined function openssl_random_pseudo_bytes() in /home/www/e710cfc1d3474721b297332525a65bdc/web/tekurie2017/plugins/auto/incarner/v1.1.1/incarner_fonctions.php on line 62

    Je précise que je suis sous spip 3.1.6
    Merci d’avance pour votre aide qui me permettra d’utiliser ce plugin bien utile.

    • Bonjour,

      C’est probablement à cause d’une vieille version de PHP. On peut savoir quelle version de PHP est installée sur le serveur dans l’espace privé, en allant à l’adresse http://mon-site-spip/ecrire/?exec=info

      Je parie que vous avez un PHP 5.2 tout au mieux, j’ai bon ?

      J’ai quand même amélioré un peu le support des vieux PHP dans une nouvelle version du plugin, la 1.2.0. Avec un peu de chance ça devrait passer… Est-ce que la nouvelle version règle votre problème ?

    • Merci d’avoir répondu aussi rapidement.

      En effet mon hébergeur est sous Php 5.2.17.

      Où puis je télécharger cette version 1.2.0 de ce plugin afin de l’essayer ?

    • Oups. Viens de voir qu’il y avait une mise à jour dispo dans la partie « gestion des plugins ». Je teste donc la nouvelle version en arrivant chez moi.

    • La version mise à jour fonctionne sur mon site. Cela va me faire gagner du temps dans la gestion de mon site. Merci encore bystrano.

      Je me permettrai de remarquer qu’il y a un fonctionnement étrange du bandeau « Logout définitif-Redevenir admin ». En effet, après avoir cliqué sur bouton ou lien de déconnexion classique dans l’espace privé ou public pour me déconnecter, ce bandeau du pluguin apparaît. Seul le clic alors sur « Logout définif » me déconnecte. Le clic sur « Redevenir admin » m’envoie dans l’espace privé (toujours connecté sur mon compte d’admin).
      En bref hors incarnation, je pense que le bandeau du plugin reste actif et perturbe la déconnexion.

    • C’est bien le fonctionnement prévu. Après une première déconnexion, on « incarne » un utilisateur anonyme, et il faut faire un logout définitif pour se déconnecter pour de bon. Peut-être qu’il faudrait présenter ça différemment ?

      Ce statut d’« anonyme incarné » est utile quand on débugue le fonctionnement du site pour les anonymes. En plus d’éviter d’avoir à se reloguer après chaque test, cela permet d’utiliser les outils de debug sur les pages qui ne sont pas accessibles aux utilisateurs connectés, comme la page de login.

    Répondre à ce message

  • 1

    Bonjour,

    Créé 1 auteur par type d’autorisations et se loguer avec directement, ça va aussi ?

    • Bonjour,

      Le plugin ne crée pas d’auteurs par lui-même, mais libre à toi de fonctionner comme ça.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom