Profils

Ce plugin permet de configurer un ou plusieurs profils utilisateurs en déclarant quelles informations ils peuvent contenir (quels champs, une fiche de personne ou d’organisation, des coordonnées, etc).

C’est quoi un profil ?

Un profil est une liste d’informations possibles qui pourront être jointes à un compte utilisateur.

Ce plugin permet de configurer plusieurs profils dans le même site, avec des informations différentes (par ex un profil « association », un profil « entreprise »…). Mais un compte utilisateur aura toujours un seul profil assigné.

Les informations liées à un profil peuvent provenir de différentes sources cumulées :

  • directement des champs de la table des utilisateurs (spip_auteurs)
  • de champs extras ajoutés à cette table
  • des coordonnées liées au compte utilisateur
  • des champs d’un Contact ou d’une Organisation, voire des deux à la fois reliés (une organisation et une personne physique liée à cette organisation)
  • de champs extras ajoutés à ces tables
  • des coordonnées liées à une organisation
  • des coordonnées liées à un contact
  • et tout ça mélangé à la fois !

Le plugin n’ajoute aucun champ lui-même, mais il s’occupera toujours d’enregistrer les bonnes informations aux bons endroits, reliées comme il faut, selon ce que vous avez configuré.

À ce titre, ce plugin peut être vu comme une continuation du plugin Inscription2/3, mais en plus générique.

N.B. : Si vous utilisiez ce plugin, qui ajoutait des champs directement dans spip_auteurs, à partir du moment où vous gardez ces champs intacts en les faisant gérer par Champs Extras à la place, alors vous pourrez le remplacer par Profils d’un coup sans rien perdre.

Configurer un profil

L’édition d’un profil diffère selon les plugins que vous avez installés. Pour cela il faut se rendre dans le menu Configuration => Profils.

Seul un email est obligatoire

Parmi les innombrables possibilités qui vous sont présentées, sachez qu’absolument aucun champ n’est obligatoire dans un profil sauf avoir un email.

Cet email peut être n’importe où : celui de spip_auteurs, ou un champ nommé « email » que vous auriez rajouté avec Champs Extras sur les Contacts ou les Organisations, ou n’importe quelle coordonnées de type Courriel.

Si jamais plusieurs champs sont configurés, le plugin prendra pour email principal, c’est-à-dire celui qui sera aussi copié dans le compte utilisateur et utilisable comme identifiant de connexion, l’email le plus « proche » du compte utilisateur :

  • son champ email directement
  • sinon la première coordonnée Courriel lié à l’utilisateur
  • sinon un champ « email » de l’organisation
  • sinon la première coordonnée Courriel lié à l’organisation
  • sinon un champ « email » du contact
  • sinon la première coordonnée Courriel lié au contact

Nom de l’utilisateur

Sur le même principe, le nom de l’utilisateur sera pris au plus proche : le nom/pseudo de la table utilisateur, ou le nom de l’organisation, ou le prénom et/ou nom du contact.

Et si aucun nom n’est trouvé (c’est facultatif), le nom d’utilisateur sera la partie identifiante de son email (qui lui est obligatoire), ce qui se trouve avant l’arobase.

Cela permet donc aussi d’avoir un formulaire d’inscription demandant seulement un email !

Quoi configurer

Pour chacun des champs, vous pourrez choisir :

  • Inscription : le champ sera demandé lors du formulaire d’inscription (oui celui fourni par SPIP, donc vous n’avez rien à toucher aux squelettes)
  • Édition : le champ sera demandé dans le formulaire de profil complet #FORMULAIRE_PROFIL fourni par le plugin, et utilisable par les admins dans l’interface de SPIP
  • Obligatoire : le champ est obligatoire…

Compte utilisateur

Dans tous les cas, le plugin permet de définir les champs de l’utilisateur (table spip_auteurs), et ses Champs Extras s’ils existent.

Coordonnées

Si vous avez le plugin idoine, une case à cocher apparaitra permettant de dérouler un nouveau tableau pour les coordonnées.

Il est possible d’ajouter plusieurs coordonnées (une nouvelle ligne apparait quand on en valide une), mais par contre, une seule coordonnées d’un même type (un seul numéro « portable », un seul numéro « professionnel », etc).

Pour les coordonnées, il est en plus possible de surcharger le label afin d’avoir quelque chose de moins lourd que ce qui est généré par défaut.

Le tableau sera le même pour les coordonnées d’une organisation ou d’un contact.

Organisation

Si vous avez le plugin C&O, vous pouvez lier une organisation (une personne morale) au compte utilisateur, et choisir un ou plusieurs champs.

Contact

Si vous avez le plugin C&O, vous pouvez lier un contact (une personne physique) au compte utilisateur, et choisir un ou plusieurs champs.

Le plugin l’explique dans l’interface, mais vous avez la possibilité de lier un contact et une organisation. Dans ce cas, ce sera toujours l’organisation qui sera lié au compte utilisateur directement. Le contact lui, sera lié à l’organisation.

Annuaire

Si jamais vous avez activé la gestion des annuaires dans C&O, alors le plugin Profils en tiendra compte aussi ! Vous pouvez donc choisir l’annuaire dans lequel seront rangés l’organisation et le contact. À défaut, dans tous les cas, Profils créera l’annuaire à la volée du même nom et même identifiant que le profil en cours de configuration.

Gestion des comptes

Une fois sur la page d’un profil configuré, vous avez alors un faux formulaire non-fonctionnel, qui vous donne une vue d’ensemble des champs que vous avez choisi pour l’édition.

Dessous se trouvera la liste de tous les comptes utilisateurs attachés à ce profil, et un lien d’ajout. Vous pouvez alors créer de nouveau compte ou modifier des comptes existants, grâce au formulaire tout-en-un généré dynamiquement, qui enregistrera toutes les informations dans les bons contenus.

Les comptes utilisateurs créés par ce moyen par les admins seront des comptes « visiteurs » et auront ce profil attaché en tant que profil principal (un champ id_profil est ajouté dans spip_auteurs).

Dans de nombreux cas, cette interface peut alors remplacer complètement les pages d’admin des visiteurs + celles de Contacts & Organisations. Tout est accessible et éditable sur une même page.

Édition en masse avec CSV

Le plugin fournit des formulaires pour exporter et importer tous les profils et toutes les informations liées en CSV.

Importation

Un formulaire permet l’importation en masse de multiples comptes utilisateurs avec toutes leurs informations liées, quelque soit leur complexité. Pour cela, les colonnes doivent avoir des noms précis suivant un formalisme qui permet au plugin de savoir où enregistrer les données (tel champ est pour auteur, tel autre pour organisation, etc).

Afin de connaitre les colonnes attendues pour tel profil précis, il vous suffit d’exporter les colonnes avec l’autre formulaire.

Grâce au champ d’email principal qui est censé être obligatoire, le plugin reconnait si un compte utilisateur existe déjà, et lance alors une modification de l’existant. Vous pouvez donc utiliser l’importation en masse pour modifier des centaines de comptes existants d’un coup !

Attention au fonctionnement : pour chaque ligne à importer, le plugin crée une tâche (avec le gestionnaire de tâches de SPIP). Elles seront donc exécutées au fil de l’eau, vous pouvez les voir dans l’interface Maintenance => Liste des travaux.

Exportation

L’export fournit l’ensemble des données configurées pour ce profil, avec des noms de colonnes précis, qui vont permettre de ré-importer dans l’autre sens si vous le désirez.

Une case permet aussi de n’exporter que les colonnes. Cela vous permet de remplir des données en masse pour les importer ensuite, sans forcément vouloir éditer l’existant.

Mot de passe dès l’inscription

Si vous voulez que vos visiteurs puissent choisir leur mot de passe dès l’inscription (c’est plus sécurisé que d’envoyer un mot de passe en clair par email), vous pouvez utiliser le plugin dédié Mot de passe dès l’inscription. Il fonctionnera avec le plugin Profils sans conflit.

Connexion dès l’inscription

Si vous voulez que les gens soient directement connectés au terme du formulaire d’inscription, là aussi utilisez le plugin dédié Connexion dès l’inscription.

Utilisation dans les squelettes

Inscription

Comme écrit plus haut, ce plugin étend directement le formulaire d’inscription fourni par SPIP, qui s’insère avec #FORMULAIRE_INSCRIPTION. Vous n’avez donc rien à faire si vos squelettes l’utilise déjà.

Édition du profil

Afin que vos utilisateurs puissent modifier leur profil complet, le plugin fournit un nouveau formulaire #FORMULAIRE_PROFIL à utiliser dans votre site public. Il s’agit du même formulaire utilisé par les admins dans l’interface de SPIP.

Pour qu’il soit utilisé en mode édition, vous devez au moins fournir l’id_auteur. Si ce compte a déjà un profil lié, c’est le formulaire de ce profil qui sera généré. Sinon il prendra le premier profil trouvé (il est prévu d’ajouter une config pour définir quel est le profil par défaut du site).

  1. #FORMULAIRE_PROFIL{#ID_AUTEUR}

Par ailleurs, il est possible de demander explicitement un profil précis. De cette manière, vous avez même la possibilité d’éditer un même compte utilisateur avec plusieurs profils différents, avec donc des champs différents !

  1. #FORMULAIRE_PROFIL{#ID_AUTEUR, association}

Un troisième paramètre permet de définir la page où rediriger après traitement. Sinon cela restera sur la même page.

  1. #FORMULAIRE_PROFIL{#ID_AUTEUR, '', #URL_PAGE{truc}}

Dernière modification de cette page le 1er avril 2019

Discussion

3 discussions

  • 17

    Chouette plugin pour gérer le RGPD.

    Petit problème : la propriété afficher_si pour les champs extra bloque l’affichage des champs concernés.

    • Yop, pas compris de qui de quoi pour afficher_si et champs extras, faudrait un exemple de config.

    • En édition, les profils n’affichent pas les champs extra qui sont soumis à un affichage conditionnel, même si la condition est réalisée.

    • Dans #FORMULAIRE_PROFIL et #FORMULAIRE_INSCRIPTION ? Est-ce que tu as des erreurs javascript ? URL pour voir ?

    • Je n’utilise que le formulaire #FORMULAIRE_PROFIL{id_auteur,id_profil}.
      Ca doit effectivement bloquer au niveau du javascript car je vois tout ce qu’il me faut dans le code html.

    • Bé oui mais regarde justement pour dire si oui ou non. :)
      Il faut ouvrir la console JS avec F12 et recharger la page.

    • Je vois que ça dans la console :

      Blocage du chargement du contenu mixte actif (mixed active content) « http://fonts.googleapis.com/css?family=Muli »

    • si on avait une url ce serait plus simple.

    • hum, le formulaire lui même n’apparait pas dans le code html (en dehors même de toute question d’afficher_si)

    • Comme je disais : pas si évident. Question de droits
      login toto passe tatito

    • Service worker event waitUntil() was passed a promise that rejected with ’TypeError : NetworkError when attempting to fetch resource.’.

      > peut être ca qui bloque la suite.

      Est-ce que tu pourrais mettre le code suivant
      define('_SAISIES_AFFICHER_SI_JS_LISIBLE', true);

      ca permet d’avoir un code js lisible pour l’affichage conditionnel.

    • (code à mettr dans mes_options.php)

    • la case à cocher est est de name contact[architecte] alors que l’affiche conditionnel porte sur architecte. Il y a donc un problème dans l’afficjage conditionnel.

    • Bien vu ! Merci

    • Ah oui il y a forcément un problème avec ça. Car quand on configure les champs extras, on le fait suivant le nom des champs de l’objet. Mais dans le formulaire de profil (et d’inscription) tout est renommé en mettant dans un tableau du type de l’objet. Et on peut pas changer ça manuellement puisqu’il faut que ça marche à la fois dans l’édition classique de l’objet où on a ajouté le champ, et dans les profils.

      Normalement ya une transformation automatique quand on génère les saisies du profil, mais possible que ça oublie de transformer les valeurs des afficher_si. Ça se passe là :
      https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/profils/trunk/inc/profils.php#L185

    • Personnellement, j’ai trouvé la solution d’affichage :
      test(champ) || test(objet[champ])

    • Oui ça marche mais donc ça veut dire le faire manuellement en sachant qu’on a le plugin Profils aussi et qu’on sait qu’il fonctionne comme ça. Donc c’est quand même problématique, ça devrait être auto.

    Répondre à ce message

  • 1

    Merci beaucoup pour ce plugin.
    Quelques questions :
    -  Existe-t-il une API pour pouvoir créer des profils lors de l’installation d’un autre plugin comme c’est le cas avec les champs extras ?
    -  Peut-on restreindre la création et l’édition d’objets éditoriaux ainsi que les zones d’accès (plugin accès restreint) en fonction du profil ?

    • -  Non. :) Enfin après c’est pas pareil que les champs extras, car si tu dois toi-même ajouter un nouveau champ, tu devrais toi-même t’inscrire dans 12 pipelines différents pour faire toutes les actions nécessaires. Donc là normal qu’il y ait une API. Alors que pour Profils, il s’agit d’UN objet à insérer dans spip_profils avec son tableau de config. Donc bah ça tu peux déjà le faire dans ton fichier « administrations » en ajoutant un contenu lors de l’installation de ton plugin.

      -  Le plugin gère des profils et c’est tout. Après tu en fais ce que tu veux ailleurs, mais le plugin ne fait rien d’autre que ça. Même principe que pour le plugin Abonnements : il ne gère que des abonnements qui sont des « périodes » (début-fin) liées à un compte utilisateur. Et c’est tout, ça ne fait rien d’autre. Après charge à d’autres plugins de l’utiliser, comme le plugin « Abonnements à des zones restreintes ». Là ça serait un peu le même principe dans ce que tu expliques. En tout cas à faire dans un autre plugin forcément.

    Répondre à ce message

  • 8

    Beau boulot ce plugin !

    Question : c’est voulu que quand on passe par la partie « Auteur » de SPIP tous les champs extra sont visibles et non pas seulement ceux attribués au profil ?

    • Yo
      oui puisque tu peux très bien vouloir voir ces champs et les éditer en admin pour d’autres besoin, ça n’a aucun rapport avec le profil (le form de profil et/ou l’inscription).

      On devrait ajouter une page (ou juste une box JS) pour voir uniquement les infos du profil précis bientôt. :)

    • @RastaPopoulos : je vais voir du coup pour surcharger le formulaire auteur de SPIP de mon côté car c’est un peu confusant d’avoir des champs qui ne correspondent pas au profil ;)

      Sinon je n’ai pas le plugin coordonnées et j’ai une erreur sur pas mal d’écrans où il se plaint que le filtre coordonnees_lister_types_coordonnees n’est pas là, par ex sur /ecrire/ ?exec=profil&id_profil=1.

    • Ah merci du retour, on va regarder pour Coordonnées, le but c’est bien que tout soit toujours optionnel.

    • Ça devrait être réglé en v1.5.3

    • @RastaPopoulos : voilà ce que j’ai intégré dans mes_fonctions.php : https://gist.github.com/julienmru/4...

      Comme ça, sur la partie Auteurs de SPIP je n’ai que les champs correspondant au profil :)

      C’est peut être pas parfait mais ça répond à mon besoin ^^

    • Yep ok mais du coup, ces champs que tu masques tu les as ajouté pour quoi ?

      Et dans tous les cas, pour les admins du site, comment tu modifies ces valeurs si tu n’y as plus accès ?

      Dans tous les cas l’édition des infos des profils devraient en priorité se faire depuis la liste des profils, vu que c’est pas le bon formulaire tout-en-un généré exprès pour les champs voulus.

    • En fait j’ai des champs extras spécifiques qui ne me servent que pour les auteurs ayant un profil donné et le code ne touche qu’à l’affichage des champs extra dans les formulaires des auteurs, les champs standards de SPIP ne sont pas concernés. Et pour les admins (ou les auteurs sans profil) tous les champs sont affichés (quoiqu’on pourrait décider de ne pas les afficher).

      Si je fais ça c’est pour ne pas perturber les administrateurs passant par la section auteurs de SPIP. Ce qui est obligatoire pour gérer le mot de passe par exemple.

    Répondre à ce message

Ajouter un commentaire

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