Accueil

Référence développeur · PrestaShop

Websource Social Login pour PrestaShop — référence développeur

Hooks et emplacements, contrôleurs, déroulé OAuth 2.0 / OpenID Connect, tables, sécurité et ajout d'un réseau au module Websource Social Login.

Version 1.0.0 · PrestaShop 1.7.7 à 9.x, PHP 7.3+ (curl, json, openssl), HTTPS · Mis à jour le 09/10/2026

Guide utilisateur

Cette extension existe aussi pour : WordPress

Hooks utilisés

HookRôle
displayCustomerLoginFormAfterBoutons sous le formulaire de connexion (hook natif).
displayWebsourceSocialLoginHook du module pour les autres emplacements, paramètre place.
displayCustomerAccountTuile « Connexions sociales » du compte client.
actionFrontControllerSetMediaviews/css/front.css et script des boutons.
actionDeleteGDPRCustomer, actionExportGDPRData, actionObjectCustomerDeleteAfterSuppression et export des liaisons avec le compte client.

Emplacements dans un thème

{* Page de création de compte : templates/customer/registration.tpl *}
{hook h='displayWebsourceSocialLogin' place='register'}

{* Tunnel de commande : templates/checkout/_partials/steps/personal-information.tpl *}
{hook h='displayWebsourceSocialLogin' place='checkout'}

{* Menu « Mon compte » de l'en-tête (visiteur) *}
{hook h='displayWebsourceSocialLogin' place='header'}

{* Fenêtre de connexion de la liste de souhaits *}
{hook h='displayWebsourceSocialLogin' place='wishlist'}

{* Page de connexion, si le thème n'appelle pas le hook natif *}
{hook h='displayCustomerLoginFormAfter'}

Un emplacement n'est rendu que s'il est coché dans « Où afficher les boutons », qu'au moins un réseau est actif et complet, et que le visiteur n'est pas connecté.

Contrôleurs publics

ContrôleurRôle
startDépart : crée le flux (state, nonce, PKCE), pose le cookie de liaison, redirige vers le réseau. Paramètre : identifiant du réseau, page de retour (liste blanche).
callbackRetour du réseau (GET, ou POST pour Apple) : échange du code, lecture du profil, connexion, création ou demande de liaison. C'est l'URL de rappel à enregistrer chez le réseau.
pendingÉtapes intermédiaires : saisie du mot de passe pour lier un compte existant, saisie et confirmation de l'e-mail quand il est absent ou non vérifié (lien valable 1 heure).
accountPage « Connexions sociales » : lier, délier.

URL de rappel : https://<boutique>/index.php?fc=module&module=websourcesociallogin&controller=callback ou, avec URL simplifiées, https://<boutique>/<langue par défaut>/module/websourcesociallogin/callback. Toujours en https, identique pour toutes les langues d'un domaine.

Déroulé d'une connexion

  1. Clic sur un bouton : start.
  2. Retour sur callback : - compte social déjà lié : connexion ; - e-mail vérifié par le réseau et client existant : mot de passe demandé (pending), puis liaison ; - e-mail vérifié et inconnu : création du client (mot de passe aléatoire, groupe par défaut, newsletter et offres partenaires non cochées), puis connexion ; - e-mail non vérifié ou absent : saisie de l'e-mail et lien de confirmation.

Réseaux

RéseauProtocolePKCEChamps
googleOpenID Connect (id_token vérifié)S256client_id, client_secret
facebookOAuth 2.0 (profil par API)nonclient_id, client_secret
xOAuth 2.0 (profil par API)S256client_id, client_secret
linkedinOpenID Connectnonclient_id, client_secret
microsoftOpenID ConnectS256client_id, client_secret, tenant (défaut common)
appleOpenID Connect, retour en POSTnonServices ID, Team ID, Key ID, clé privée .p8
githubOAuth 2.0 (profil par API)S256client_id, client_secret

Scopes par défaut : Google openid email profile, Facebook public_profile email, X users.read tweet.read users.email, LinkedIn et Microsoft openid profile email, Apple name email, GitHub read:user user:email.

Sécurité

  • state à usage unique lié au navigateur (cookie de liaison), nonce, PKCE S256 quand le réseau le propose.
  • Validation de l'id_token : signature (JWKS), émetteur, audience, expiration, nonce (Security\IdTokenValidator, Security\Jwt).
  • Secrets chiffrés en base, jamais renvoyés dans la page.
  • Jamais de fusion automatique de comptes ; redirections de retour en liste blanche ; limitation du taux.
  • Aucun jeton d'accès conservé.

Données

Clé / tableContenu
{prefix}websourcesociallogin_linkid_link, id_customer, id_shop, provider, provider_user_id, email, consent_date, date_add, date_last_login
{prefix}websourcesociallogin_flowid_flow, token_hash, type, payload (state, vérificateur PKCE, nonce, étape), bind_hash, ip_hash, id_shop, expires, created
WSSL_* (Configuration, par boutique)Réseaux (activation, identifiants, scopes, position), style, emplacements, textes par langue.

Formulaire de configuration

POST sur index.php?controller=AdminModules&configure=websourcesociallogin&token=… avec wssl_token :

ChampRôle
wssl_saveEnregistre tout l'écran.
wssl_test = identifiant du réseauLance le test de configuration de ce réseau.
p[<réseau>][enabled], p[<réseau>][<champ>], p[<réseau>][scopes], p[<réseau>][position], p[<réseau>][clear][<champ>]Réglages d'un réseau.
style[…] (dont style[icon_only]), separator, remember, places[]Apparence et emplacements (login, register, checkout, header, wishlist).
label[id_lang], gdpr[id_lang]Textes par langue.

Template et CSS

Templates views/templates/hook/buttons.tpl, account-tile.tpl, views/templates/front/account.tpl, pending.tpl, surchargeables dans themes/<theme>/modules/websourcesociallogin/views/templates/…. Variable Smarty $wssl : class, style, title, separator, separator_pos, separator_text, buttons[] (id, url, label, aria, icon, last), gdpr, last_label.

Classes : .wssl, .wssl__sep, .wssl__list, .wssl__legal, .wssl-btn, .wssl-btn--<réseau>, .wssl-btn__logo, .wssl-btn__label, .wssl-btn__badge, .is-last. La feuille reprend les variables du thème (--color-brand-*, --color-line, --radius-xl…) avec des valeurs de repli.

Ajouter un réseau

  1. Créer src/Provider/MonReseauProvider.php (interface Websource\SocialLogin\Provider\ProviderInterface ; étendre OidcProvider pour OpenID Connect, sinon AbstractProvider) : id(), label(), fields(), defaultScopes(), usesPkce(), usesFormPost(), buildAuthorizationUrl(…), fetchProfile(…) qui renvoie un Profile (identifiant, e-mail, e-mail vérifié, prénom, nom).
  2. L'enregistrer dans ProviderRegistry::default().
  3. Ajouter son guide dans src/Guide/data_fr.php et data_en.php (intro, console, steps, scopes, errors, links) et son logo dans src/Render/IconLibrary.php.
  4. Lancer php tests/run.php.

La liaison et l'anti-prise de compte sont gérées par Linking\LinkingService et Flow\FlowService : un fournisseur doit seulement renvoyer un Profile fiable et indiquer honnêtement si l'e-mail est vérifié.

Tests

php tests/run.php : PKCE, state, id_token signés localement, fournisseurs avec client HTTP factice, liaison, redirections, styles, guides, traductions. L'authentification réelle auprès des réseaux n'est pas couverte.