Développer un portail client complet via l'API

Bonjour à tous,

Je suis actuellement en plein lancement d’une startup pour un service de jeu en ligne (SaaS).
Nous avons besoin d’un CRM tout à fait classique (liste des clients, outils de base pour tickets et emailings) auquel Dolibarr répond totalement à notre besoin.

En revanche, nous avons des besoins supplémentaires qui pourraient se raccorder à Dolibarr via quelques développements (qu’on peux faire en interne). Mais avant de vraiment se lancer, car on découvre totalement, j’aimerai savoir si vous pensez que c’est jouable sans faire trop de « bidouilles » dangereuses sur le plan sécurité / stabilité. Voici les besoins supplémentaires.

Le client peut aller sur notre site web créer son compte, via un « portail client » à nos couleurs.
:arrow_forward: A priori, il faut qu’on fasse une application tierce, qui va utiliser l’API. Car on ne veux pas donner accès à Dolibarr lui même par mesure de sécurité, notamment pour garder notre serveur de backend caché.
Donc si j’ai bien comprit, pour chaque tiers (customers), on va aussi avoir un utilisateur Dolibarr qu’il faudra créer en même temps via l’API et on vérifiera les identifiants de cet utilisateurs (qui seront envoyé via le formulaire sur le portail puis retransmits à l’API).
=> Possible ?

Il peut mettre à jour toutes ses informations personnelles. Incluant son mot de passe.
:arrow_forward: A priori, pas de soucis via l’API et si on sais quel utilisateur en a fait la demande.

Il peut gérer ses tickets
:arrow_forward: Là encore, via l’API, j’imagine que c’est possible. Y’a toute une interface utilisateur a créé mais l’API permet de gérer tout ça.

Il peut acheter quelques produits (de l’ordre de 10 différents)
:arrow_forward: Si j’ai bien comprit, c’est possible de faire un mini site de e-commerce. Via l’API on va récupérer les produits, puis on peux créer la commande et envoyer le liens de paiement au client de façon dynamique. Il y aura aussi la possibilité de consulter son historique d’achat / factures.
Je ne me trompe pas ? Est-ce qu’un paiement par carte classique est possible ou bien c’est forcément du Paypal / Stripe ?


L’approche pensée :
Comme on ne veux pas donner un accès direct à Dolibarr (qui sera sur un serveur différent du portail lui même), j’ai pensé qu’il fallait en fait un utilisateur spécial « Portail » avec juste les accès minimums au fonctionnement, qui est du côté de l’appli PHP du portail, s’identifie avec sa propre DOLAPIKEY et va simplement faire le relais des infos postées par les utilisateurs (sans que chaque user ai sa propre clé d’api).

2FA
Pour la sécurité des comptes, on veux avoir un 2FA en place. Mais j’ai pas l’impression que Dolibarr le gère via l’API notamment. C’est le cas ? On pourrait le gérer via notre utilisateur intermédiaire « bot » ?

Des plugins / outils déjà fait, ou recommandés pour nos besoins ?

Merci à vous ! :grinning:

Bonjour,

Il faut penser à vérifier le temps de réponse de l’API car c’est assez « mou » je trouve même si le serveur est rapide.

Par exemple, je me suis fait une interface ‹ basique › (consultation de factures) en django/python pour éviter d’utiliser du PHP et ses framework peu sécurisés.

J’utilise un peu de cache pour éviter des requêtes API trop souvent.

Pour implémenter un moyen de paiement, c’est à faire côté interface pour ne pas donner accès à Dolibarr. C’est assez chiant à implémenter surtout s’il y a du récurrent. Il faut tout gérer.

2 « J'aime »

Bonjour,
version super simple : onepagebasket mais vos clients seront « directement » sur dolibarr … celà dit via l’utilisation d’un virtualhost ça me semble quand même acceptable, c’est par exemple https://shop.cap-rel.fr/

version plus avancée en effet vous utilisez l’api et vous développez ce que vous voulez comme frontend, si vous partez sur une solution type laravel je vous invite à utiliser caprel/laravel-dolibarr - Packagist qui va vous grandement vous simplifier la vie

à vous de voir ce que vous préférez et le temps que vous pouvez y consacrer en dev, sachant que la solution 1 pourrait vous permettre de démarrer le temps de développer la 2 …

1 « J'aime »

Ah oui, c’est vrai que ca peut être un problème …
Surtout qu’on s’attend à avoir plusieurs centaines/milliers d’utilisateurs lors de pics importants. Si l’API n’est pas un minimum performante avec du cache intégré, c’est pas top. Faudra ajouter cela à notre propre application.

Merci pour ce retour d’expérience !

Merci pour le nom du module, je vais jeter un oeil.
Votre message et celui de Libremaster commencent à me faire me dire qu’il faudra effectivement prendre le « risque » de faire un accès direct à Dolibarr.
Il tiendra le coup si il y a un pic de 1000 users qui s’y connecte d’après vous ? Naturellement il sera hébergé sur un serveur dédié performant.

Avec la v20, on peut créer des comptes pour les tiers pour un usage dans une appli externe. D’ailleurs, il y aura en expérimental un portail utilisateur qui s’appuie sur ces comptes login/pass propre à chaque tiers/clients.
Ce portail pouvant être exposé via un autre virtual host.

Oui, c’est fait pour cela la page de paiement en ligne de Dolibarr.

NB: Stripe, c’est du paiement par carte classique. Le client qui paie via la page de paiement de Dolibarr ne sait pas que c’est Stripe (sauf en lisant le libellé sur le bouton, renommable, ou en lisant le doc RGPD).

C’est à cela que sert le jeton API. Il faut bien l’utiliser sur un user générique pour un usage machine to machine…

Non, par définition le 2FA ne peut etre par API, c’est le propriétaire d’un matériel donné qui doit saisir un code. C’est géré sur l’accès Dolibarr mais via un module externe pour l’instant. Par contre, par API, il est possible de limiter l’accès à une adresse IP particulière seulement (en plus du jeton), ce qui est plus fort encore que le 2FA.

La v20 qui sort en juillet sera très proche de votre besoin avec son portail client natif. Sa table spécifique pour saisir des comptes login/mot de passe pour chaque tiers ou encore la possibilité d’intégrer le workflow de paiement dolibarr dans une frame d’un autre portail…

1 « J'aime »

Il est possible de faire un genre de firewall devant Dolibarr et d’autoriser des URLs ultra-précises (celles uniquement utile pour payer par exemple) en public et les autres via un VPN.

1 « J'aime »

Merci pour ces précisions !

On va attendre la v20 avec impatience alors … Il y a une version beta pour qu’on puisse commencer à tout configurer/tester et mettre en service le tout une fois la release sortie ?

En effet, si on expose Dolibarr au public, on va devoir être très stricte sur les accès !

Bonjour,

c’est d’ailleurs la règle de base à appliquer à n’importe quelle application hébergée en ligne qui n’a qu’un nombre restreint d’utilisateurs : accès possible uniquement via un VPN

Je ne pense pas que ce soit une bonne idée de gérer les utilisateurs dans dolibarr, dolibarr est là pour faire de la gestion.
Vous devriez peut-être le voir comme un site e-commerce ou tout se fait côté portail, avec transfert de donnée vers dolibarr pour les éléments de gestion.
Avoir les utilisateurs qui soient un utilisateur dolibarr va devenir une vraie galère pour la gestion interne lors des taches qui demandent de sélectionner un vrai utilisateur de votre équipe de dolibarr

J’ai fait il n’y a pas longtemps un système d’authentification avec Laravel et qui fait la liaison entre dolibarr et l’application finale (dolibarr ↔ auth laravel ↔ application)

2 « J'aime »

Bonjour,

je n’ai pas trouvé la roadmap pour la v20 qui liste les nouvelles fonctionnalités à venir. Sur le wiki ça s’arrête à la v19 Category:RoadMap - Dolibarr ERP CRM Wiki

Est-elle disponible à un autre endroit ? Je n’ai rien trouvé sur le dépôt github non plus.

Bonjour,

Le wiki n’est mis à jour que quand la branche v20 est disponible, ce n’est pas encore le cas.

Le pré-changelog de la v20 est là : (ligne 15 pour le module WebPortal)

Bonne journée,

1 « J'aime »

Bonjour,

Il faut prendre la branche develop sur le GitHub du projet : GitHub - Dolibarr/dolibarr: Dolibarr ERP CRM is a modern software package to manage your company or foundation's activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). it's an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.
La branche 20.0 n’a pas encore été créee.

Merci, je l’ai récupérée. Je vais regarder et tester tout ça :slight_smile:

Bonjour Tanka,

Je viens de charger la version 20.1, mais je ne trouve pas de modules associés à un portail externe … Peux tu m’en dire plus sur sa localisation/activation ?

Merci de ton aide

Hello,

Comme le portail est étiqueté « expérimental », il faut déclarer une constante MAIN_FEATURES_LEVEL = 2 dans configuration => divers pour le voir apparaître.

Comme son statut l’indique, ce module n’est pas encore considéré stable, donc il faudra prévoir des tests et du debug.

Bonne soirée

Merci beaucoup pour le retour ! Bonne semaine :slight_smile: !