Bezoekers hun eigen bedrijf laten beheren
Doel
Laat de mensen die zich op je portal aanmelden bij een bedrijf horen — er een oprichten, collega's uitnodigen, zien wie er lid is, wijzigen wat ze mogen doen en vertrekken — allemaal vanaf een scherm dat jij tekent.
Voordat je begint
- Een portal die bezoekers vraagt zich aan te melden. Zie Bezoekers vragen zich aan te melden.
- E-mail versturen, ingericht door degene die je Parsware-installatie beheert. Een uitnodiging is een bericht met een link erin; zonder e-mail kan niemand worden uitgenodigd.
Waarom deze aanroepen van het platform zijn en niet van je aangepaste API
Al het andere dat je portal leest en schrijft, gaat via een aangepaste API die jij hebt geschreven. Een bedrijf niet, en het is goed te weten waarom: wie bij welk bedrijf hoort, wordt bijgehouden door de identiteitsservice van het platform, en die accepteert de sessie van een bezoeker alleen van de eigen server van de portal. Je aangepaste API draait daar niet — die draait waar je tabellen staan — dus geen enkel script dat je zou kunnen schrijven, zou iemand mogen uitnodigen.
Het platform geeft je daarom de zes aanroepen, en jij tekent het scherm. Er is geen pagina Personen ingebouwd in het platform: de ledenlijst, het vak Uitnodigen en de rolkiezer deel je zelf in, net als de rest van je portal.
De zes aanroepen
| Aanroep | Wat hij doet |
|---|---|
startCompany(name) | Richt een bedrijf op met deze bezoeker als eerste Owner |
invitePerson(email) / invitePerson(email, role) | Stuurt een uitnodiging per e-mail. Alleen voor Owners. Member als er geen rol is opgegeven |
loadCompanyPeople(into) / loadCompanyPeople(into, companyInto) | Zet de personen in een statusveld, en het bedrijf in een tweede |
changePersonRole(person, role) | Wijzigt wat een collega mag doen |
removePerson(person) | Verwijdert een collega, of trekt een openstaande uitnodiging in |
leaveCompany() | Deze bezoeker vertrekt |
De rollen zijn Member, Billing en Owner, en elke rol mag alles wat de vorige mag. Alleen Owners nodigen uit, wijzigen rollen en verwijderen personen; dat bepaalt het platform, niet je scherm.
Stappen
-
Teken een tekstvak en koppel de waarde aan een statusveld — bijvoorbeeld
state.text. -
Teken een knop en geef hem deze click-handler:
startCompany(getState("text"));createRecord("par_client", { par_name: getState("text") });loadCompanyPeople("people", "company"); -
Teken een tweede knop om uit te nodigen:
invitePerson(getState("text"));loadCompanyPeople("people", "company");notify("Invitation sent."); -
Zet in de screenLoad van het scherm
loadCompanyPeople("people", "company");, zodat de pagina opent met de lijst al gevuld.
startCompany doet twee dingen: het maakt het bedrijf aan en laat de sessie van deze bezoeker
ernaar wijzen. Pas daarna geeft portalCustomerId() iets terug — en dat is wat de aangepaste API
achter createRecord leest om je eigen record de id van het bedrijf te geven.
Doe je het andersom, dan is er geen id om aan het record te geven. Je API krijgt er nooit een van de pagina, en dat hoort ook zo: het platform bepaalt het, en dat voorkomt dat een bezoeker het bedrijf van iemand anders opeist.