Le site, l'espace client et l'admin
Les trois surfaces d'un projet, les deux sortes de comptes, et les quatre variables qui les règlent.
Un projet Fraza présente trois surfaces. Chacune a son public, et les comptes ne passent pas de l'une à l'autre. Cette page pose les mots que le reste de la documentation emploie.
Les trois surfaces
| Surface | Pour qui | Adresse |
|---|---|---|
| Le site | Tout le monde, connecté ou non. | /, les pages de contenu, les pages publiques des modules. |
| L'admin | Les comptes d'équipe. | /admin. |
| L'espace client | Les comptes clients. | /compte, ou le chemin de FRAZA_ACCOUNT_PATH. |
Le core fournit l'admin. Le projet construit l'espace client. L'admin est prête dès l'installation. L'espace client n'existe que si le projet le monte, avec les pièces que le core lui donne : la page de base, les sections des modules et les liens (voir le guide Espace client).
La connexion (/auth) est commune. Ce qui change, c'est la surface où chaque compte arrive et ce qu'il y voit.
Deux sortes de comptes
Tous les comptes vivent dans la même table. Leur sorte se déduit de leurs rôles, sans colonne à part.
| Sorte | Définition | Où il travaille |
|---|---|---|
| Compte d'équipe | Un compte qui détient admin.access, par un de ses rôles, sur un site qui a une admin. | L'admin. |
| Compte client | Tout autre compte, sur un site qui a des comptes clients. | L'espace client. |
Les deux ne se mélangent pas :
- un compte d'équipe qui ouvre l'espace client y lit une page qui lui dit qu'il est un compte d'équipe, avec un lien vers l'admin. Pour voir ce que voit un client, se connecter avec un compte client ;
- un compte client qui ouvre l'admin est renvoyé vers sa destination client (
FRAZA_AUTH_REDIRECT_CLIENT) ; - sur le site, un compte d'équipe connecté à l'admin est un visiteur. Le message qu'il envoie par un formulaire, son vote ou sa souscription ne sont jamais rattachés à son compte d'équipe.
Après la connexion, sans ?next=, la page de connexion passe par /auth/destination. Cette adresse lit la session côté serveur et envoie chaque sorte de compte chez elle : l'équipe dans l'admin, un client dans son espace.
Les quatre variables
| Variable | Défaut | Rôle |
|---|---|---|
FRAZA_ADMIN | true | false éteint l'admin : ses pages et ses routes d'API répondent 404, et aucun compte n'est un compte d'équipe. Tout compte devient alors un compte client. |
FRAZA_CLIENTS | false | true déclare que le site a des comptes clients, une fois son espace client construit. |
FRAZA_AUTH_REDIRECT_ADMIN | /admin | Où va un compte d'équipe après la connexion. / quand FRAZA_ADMIN=false. Le premier compte, créé à la première configuration, y arrive aussi. |
FRAZA_AUTH_REDIRECT_CLIENT | l'espace client | Où va un compte client après la connexion, et où il est renvoyé s'il ouvre l'admin. Sans comptes clients, /. |
Un ?next= passe toujours avant ces destinations. L'ancienne variable FRAZA_AUTH_REDIRECT_AFTER_LOGIN est encore lue : posée, elle force une seule destination pour tous les comptes. Les deux variables par sorte de compte la remplacent.
Un site sans comptes clients
C'est le cas par défaut : sans FRAZA_CLIENTS=true, seule l'équipe se connecte. fraza.ca en est un : ses clients ont leur compte sur compte.fraza.ca, un autre site. Dans ce cas :
- l'espace client répond 404, même si sa route existe ;
- les inscriptions publiques sont fermées, quelle que soit
FRAZA_AUTH_REGISTRATION: s'inscrire, c'est créer un compte client. Les comptes d'équipe se créent depuis l'admin ; accountHref()renvoienull, et les modules n'envoient vers aucun espace client, courriels compris ;- les modules traitent toute personne du site comme un visiteur. Le formulaire de rétroaction demande un courriel et donne un lien de suivi signé, par exemple.
Un projet qui accueille des clients construit son espace client, puis pose FRAZA_CLIENTS=true : voir le guide Espace client. Un site qui avait déjà monté son espace client doit maintenant poser cette variable, sans quoi l'espace répond 404.
La règle des modules
Côté public, un module ne lit jamais la session brute. Il demande la session client :
clientSessionOf(context.session)dans une route d'API ;getClientSession()dans un composant serveur ou une action.
Les deux viennent de @fraza/core/features/account/clients et renvoient null pour un visiteur, un compte d'équipe, ou un site sans comptes clients. Un lien vers l'espace client se construit avec accountHref(), qui peut renvoyer null : le module prévoit alors un autre chemin, comme un lien signé par courriel. Le détail est dans Espace client.
Compte client et fiche client
Le module Facturation tient des fiches clients : les personnes et entreprises que l'on facture. Une fiche client n'est pas un compte. Elle existe sans que personne ne se connecte, et une facture part par courriel avec un lien signé. Une fiche peut être reliée à un compte client, quand la personne se connecte à l'espace client pour retrouver ses factures.