Aller au contenu principal

Permettre aux visiteurs de gérer leur propre entreprise

Objectif​

Permettre aux personnes qui se connectent à votre portail d’appartenir à une entreprise — en créer une, y inviter des collègues, voir qui en fait partie, modifier ce qu’ils peuvent faire, et la quitter — le tout depuis un écran que vous dessinez.

Avant de commencer​

  • Un portail qui demande aux visiteurs de se connecter. Voir Demander aux visiteurs de se connecter.
  • L’envoi d’e-mails, configuré par la personne qui gère votre installation Parsware. Une invitation est un message contenant un lien ; sans e-mail, personne ne peut être invité.

Pourquoi ces appels relèvent de la plateforme et non de votre API personnalisée​

Tout ce que votre portail lit et écrit par ailleurs passe par une API personnalisée que vous avez écrite. Une entreprise, non, et il est utile de savoir pourquoi : qui appartient à quelle entreprise est géré par le service d’identité de la plateforme, qui n’accepte la session d’un visiteur que depuis le serveur propre au portail. Votre API personnalisée ne s’exécute pas là-bas — elle s’exécute là où se trouvent vos tables — et aucun script que vous pourriez écrire ne serait donc autorisé à inviter qui que ce soit.

La plateforme vous fournit donc les six appels, et vous dessinez l’écran. Il n’y a aucune page Personnes intégrée à la plateforme : la liste des membres, la zone d’invitation et le sélecteur de rôle sont à vous de les disposer, comme le reste de votre portail.

Les six appels​

AppelCe qu’il fait
startCompany(name)Crée une entreprise dont ce visiteur est le premier Owner
invitePerson(email) / invitePerson(email, role)Envoie une invitation par e-mail. Réservé aux Owners. Member si aucun rôle n’est indiqué
loadCompanyPeople(into) / loadCompanyPeople(into, companyInto)Place les personnes dans un champ d’état, et l’entreprise dans un second
changePersonRole(person, role)Modifie ce qu’un collègue peut faire
removePerson(person)Retire un collègue, ou annule une invitation en attente
leaveCompany()Ce visiteur quitte l’entreprise

Les rôles sont Member, Billing et Owner, et chacun peut faire tout ce que peut le précédent. Seuls les Owners invitent, modifient les rôles et retirent des personnes ; c’est la plateforme qui en décide, pas votre écran.

Étapes​

  1. Dessinez une zone de texte et liez sa valeur à un champ d’état — par exemple state.text.

  2. Dessinez un bouton et donnez à son gestionnaire de clic :

    startCompany(getState("text"));
    createRecord("par_client", { par_name: getState("text") });
    loadCompanyPeople("people", "company");
  3. Dessinez un second bouton pour inviter :

    invitePerson(getState("text"));
    loadCompanyPeople("people", "company");
    notify("Invitation sent.");
  4. Dans le screenLoad de l’écran, placez loadCompanyPeople("people", "company"); pour que la page s’ouvre avec la liste déjà remplie.

Tout repose sur l’ordre des appels du premier bouton

startCompany fait deux choses : il crée l’entreprise et réoriente la session de ce visiteur vers elle. Ce n’est qu’ensuite que portalCustomerId() renvoie quelque chose — et c’est ce que lit l’API personnalisée derrière createRecord pour donner à votre propre enregistrement l’identifiant de l’entreprise.

Dans l’ordre inverse, il n’y a aucun identifiant à donner à l’enregistrement. Votre API n’en reçoit jamais de la page, et ne doit pas en recevoir : c’est la plateforme qui le détermine, et c’est ce qui empêche un visiteur de revendiquer l’entreprise de quelqu’un d’autre.

Ce qui arrive dans vos champs d’état​

loadCompanyPeople("people", "company") remplit deux champs :

  • state.people — une ligne par collègue et par invitation en attente :

    ChampCe que c’est
    idmember:… ou invitation:… — à repasser tel quel à removePerson
    nameSon nom, ou l’adresse à laquelle une invitation a été envoyée
    emailL’adresse avec laquelle il se connecte
    roleMember, Billing ou Owner
    statusMember ou Invited
    isYouIndique si cette ligne correspond à la personne qui lit la page
  • state.company — { name, role, canManage }. Liez une légende à state.company.name, et placez la liaison visible de votre zone d’invitation sur state.company.canManage, pour qu’un simple membre ne voie pas un bouton qui lui serait refusé.

Une personne qui n’appartient à aucune entreprise obtient une liste vide et une entreprise vide, ce qui n’est pas une erreur — c’est à cela que sert votre formulaire « créer une entreprise ».

Un bouton Retirer qui fonctionne sur les deux types de ligne​

Répétez un tableau sur state.people et placez un bouton dans la ligne :

removePerson(row.id);
loadCompanyPeople("people", "company");

Cela retire un collègue ou annule une invitation, car l’id de la ligne indique de quoi il s’agit. Vous n’écrivez pas cette condition — et vous ne devez pas le faire, car ce sont deux actes différents pour la plateforme et elle seule en connaît les règles.

Le rôle d’une invitation ne peut pas être modifié. changePersonRole sur une ligne invitation: est refusé avec une explication : annulez l’invitation et invitez de nouveau la personne.

À quoi ressemble un refus​

La phrase propre à la plateforme apparaît à côté du bouton sur lequel la personne a appuyé — « Seul un Owner peut inviter des personnes », « Le dernier Owner ne peut pas quitter l’entreprise », « Cette adresse fait déjà partie de cette entreprise ».

Vous n’avez pas besoin d’écrire ces messages et ne devez pas chercher à les devancer : les règles appartiennent à la plateforme, et un écran qui les devinerait finirait par se tromper.

Le dernier Owner ne peut pas partir

Une personne qui est le seul Owner d’une entreprise doit d’abord faire d’un collègue un Owner. C’est voulu : une entreprise qui a des enregistrements derrière elle ne se retrouve pas sans personne pour l’administrer parce qu’une seule personne a appuyé sur un bouton.

Où aboutit une invitation​

Sur la porte d’entrée de votre portail, comme un lien de confirmation et un lien de réinitialisation de mot de passe. Une personne connectée rejoint immédiatement l’entreprise ; une personne qui ne l’est pas voit le formulaire de connexion avec Vous avez été invité au-dessus, et l’invitation l’attend toujours après son inscription et la confirmation de son adresse. Voir Demander aux visiteurs de se connecter.

À quoi cela sert​

L’entreprise est ce qui sert à une stratégie de données pour restreindre les enregistrements. Ces deux pages vont donc ensemble : celle-ci explique comment une personne en vient à avoir une entreprise, l’autre comment les lignes d’une table en viennent à lui appartenir.

Voir aussi​