Voir : https://ressources-opentalent.atlassian.net/wiki/spaces/SPEC/pages/421822467/User+Stories#La-mire-de-connexion https://dev.helloasso.com/docs/mire-authorisation#2-enregistrement-de-votre-domaine-de-redirection
Une Organization doit pouvoir associer son compte Opentalent à son compte Helloasso. Ce lien permettra ensuite des interactions avec HelloAsso comme par exemple le paiement de factures (en une ou plusieurs fois) ou l’affichage de billetteries HelloAsso sur les pages de détails des évènements (agenda, sites Typo3).
Les identifiants et clés d'API sont fournis par Helloasso, et enregistrés comme variables d'environnement (voir variables
HELLOASSO_****).
On enregistre comme domaine de redirection le domaine opentalent.fr : https://*.opentalent.fr/
(voir: ConnectionService::setupOpentalentDomain())
Toutes les URLs mentionnées ici ont une version équivalente de test :
Pour lier une Organization à son compte Helloasso :
A noter qu'on renouvelle ce jeton stocké en base de manière régulière afin que celui ci reste valide.
Par ailleurs, l'utilisateur peut :
La page HelloAsso du front (V2) donne accès à un bouton "Connecter à HelloAsso".
Ce bouton permet d'afficher une popup contenant le forumaire de connexion HelloAsso : https://auth.helloasso.com/authorize?<params>
On ajoute à l'URL de la page HelloAsso une query composée des éléments suivants :
client_id : l'identifiant client Opentalent enregistré comme variable d'environnement.redirect_uri : l'url vers laquelle l'utilisateur sera redirigé après s'être authentifié.code_challenge: code challenge PKCE à générer en amont (voir : OAuthPkceGenerator::generatePkce()).code_challenge_method : méthode du test, doit être égal à "S256".state : optionnel, pas utilisé.Le formulaire ainsi affiché permet à l'utilisateur de s'authentifier sur HelloAsso, puis en cas de réussite, de confirmer vouloir lier son compte HelloAsso à son compte Opentalent.
Une fois l'authentification effectuée via le formulaire HelloAsso, l'utilisateur est redirigé vers l'URL de callback fournie précédemment : https://app.opentalent.fr/helloasso/callback.
Lorsqu'il redirige vers l'url de callback, HelloAsso y ajoute une query. Cette query de retour contient :
A ce niveau là, si tout s'est bien déroulé, on dispose donc d'un jeton d'autorisation HelloAsso authorization_code.
On adresse ensuite une requête POST à l'adresse https://api.helloasso.com/oauth2/token,
contenant le body suivant (application/x-www-form-urlencoded) :
client_id : l'identifiant client Opentalent enregistré comme variable d'environnement.client_secret : la clé secrète Opentalent enregistré comme variable d'environnement.grant_type: doit valoir 'authorization_code'.code: l'authorization_code fourni précédemment.code_verifier: la valeur initiale utilisée pour le challenge PCKE, stockée en base.redirect_uri : l'url de callback passée précédemment au formulaire HelloAsso..On récupère ensuite une réponse JSON de la forme :
access_token : le jeton qui servira pour les requêtes vers l'API, valable 30 min.refresh_token : Le jeton permettant de demander le renouvellement de l'access_token, valable 30 jours.token_type : doit valoir "bearer".expires_in : la durée de validité du token d'accès, en secondes.organization_slug : le slug de l'organization que l'on vient de connecter.On stocke enfin dans la table HelloAsso les valeurs de access_token, refresh_token et organization_slug, associées
à l'id de l'Organization.
TODO: à compléter
TODO: à compléter
Pour dissocier le compte HelloAsso du compte Opentalent, il suffira de supprimer la ligne correspondant à
l'Organization dans la table HelloAsso.