Adoption de Lightning et abandon des boutons JavaScript
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Décrire les défis liés à la sécurité que présente l’utilisation du JavaScript.
- Lister des scénarios d’utilisation courants de boutons JavaScript personnalisés.
Boutons JavaScript : il est temps d’évoluer
Nous savons que vous adorez les boutons JavaScript et que vous les utilisez dans Salesforce Classic depuis des années. En fait, vous pourriez même être réticent envers la migration vers Lightning Experience car les boutons JavaScript n’y sont pas pris en charge. Mais Lightning Experience a bien plus à offrir que Salesforce Classic, et c’est cette solution qui sera utilisée à l’avenir.
Nous sommes conscients que vous comptez sur nous et que vous vous attendez à ce que nous migrions toujours les fonctionnalités existantes vers de nouvelles fonctions et interfaces utilisateur. Mais dans le cas des boutons JavaScript, nous croyons en un avenir meilleur avec Lightning Experience, et ce même si cet environnement ne prend pas en charge les boutons JavaScript. Et dans ce module, nous vous montrerons pourquoi.
Les liens et boutons JavaScript sont des types d’action de l’interface utilisateur de Salesforce Classic qui vous permettent de développer du code JavaScript en ligne qui peut alors être invoqué via un bouton ou un lien intégré à une page d’enregistrement ou de liste. Par exemple, peut-être renseignez-vous des données dans de nouveaux enregistrements dès l'ajout ou la mise à jour de valeurs dans des champs dépendant d'une autre logique. Ou alors, vous êtes peut-être un partenaire Salesforce qui utilise des boutons personnalisés en les intégrant à sa propre plateforme.
Mais si les boutons JavaScript sont si utiles, pourquoi ne les prenons-nous pas en charge dans Lightning Experience ? Car des défis considérables liés à la sécurité peuvent se manifester si vous associez du JavaScript non fiable provenant de plusieurs sources et auteurs au code source de l’application, alors qu’avec notre méthode, la fiabilité est inaltérée.
Nous aborderons ces défis en matière de fonction et de sécurité, et nous vous proposerons des alternatives aux boutons JavaScript qui sont mobiles et compatibles Lightning. Nous étudierons également les fonctionnalités de Salesforce que vous pouvez utiliser pour migrer les fonctionnalités que vous avez conçues à l’aide de boutons personnalisés.
Nous nous engageons à résoudre le problème lié à la personnalisation et à l’intégration côté client. Permettez-nous de vous montrer une nouvelle manière d’envisager les fonctionnalités de bouton JavaScript dans Lightning Experience.
Défis Sécurité liés aux boutons JavaScript et scénarios d’utilisation
L’un des avantages les plus intéressants de Lightning Experience, c’est qu’il vous offre la possibilité d’ajouter vos composants Web Lightning personnalisés des pages d’enregistrement, d’accueil et autres. Par exemple, vous choisirez peut-être d’ajouter un composant Carte à vos pages d’enregistrement Compte. Ou alors, vous fournirez peut-être un composant pour votre application AppExchange, qui pourra être ajouté à la page d’accueil ou à un enregistrement Opportunité.
Cependant, sans quelques dispositifs de protection, les composants ont accès à leurs données respectives. Ils partagent également l’accès aux structures de fenêtre et d’événement ainsi qu’à l’API côté client. Les données d’un composant partenaire dédié à la conformité HIPAA ou aux informations financières pourraient par exemple être accessibles à un composant d’une autre source si ces deux composants se trouvent sur la même page. Comme vous pouvez l’imaginer, cet accès croisé entre composants peut entraîner des problèmes de sécurité et des problèmes réglementaires.
Nouveautés du JavaScript en ligne
Avant d’aborder les dispositifs de protection que Salesforce met en œuvre pour la sécurité des composants Web Lightning, concentrons-nous sur certains des problèmes intervenant avec le JavaScript en ligne. Le JavaScript est un langage de programmation flexible pris en charge par tous les navigateurs Web modernes sans plug-in. Il permet de stocker des données et états par le biais de cookies et d’API de stockage, mais aussi d’accéder à des événements, URL et cookies par le biais d’un navigateur. La raison pour laquelle le JavaScript est à la fois utile et dangereux, c’est que le code développé dans ce langage a entièrement accès au Document Object Model (DOM) et au Browser Object Model (BOM).
En disposant de la possibilité d’accéder au DOM, un programmeur peut ajouter, modifier ou supprimer pratiquement tout le contenu d’un document HTML ou XML. Dans de bonnes mains, cela s’avère utile car le JavaScript fournit une API qui permet de travailler avec du texte, des dates et des expressions régulières. Il est donc très facile d’ajouter une fonctionnalité côté client avec des extraits de code JavaScript qui améliorent l’interface utilisateur de base. Cependant, cette méthode constitue une vulnérabilité considérable car avec les scripts de site à site (XSS), des personnes malveillantes peuvent accéder aux données du DOM ou du BOM via du JavaScript, et ainsi faire des ravages.
Lorsqu’un site Web permet le contenu dynamique, les hackers peuvent utiliser des XSS pour injecter du code malveillant côté client dans les pages Web qui sont consultées par les clients conventionnels. Ces hackers peuvent alors exploiter la session de l’utilisateur et les cookies dans le but d’exécuter des scripts qui extrairont des données, consigneront les saisies au clavier, manipuleront les entrées de formulaire, et même, accèderont aux API.
Sécurité Web Lightning : renforcer la sécurité des composants Web Lightning
La bonne nouvelle, c’est que Salesforce travaille déjà sur une solution visant à renforcer la sécurité des composants Web Lightning et à restreindre l’accès sans entrave permis par le JavaScript. Il s’agit de la solution Sécurité Web Lightning (LWS). Elle utilise différentes technologies et techniques destinées à empêcher :
- les problèmes liés au XSS et autres problèmes de sécurité similaires ;
- l’accès au DOM sans restriction ;
- Appels vers des API non sécurisées
En même temps, les fonctionnalités de Sécurité Web Lightning assurent également :
- L’importation et l’utilisation de composants provenant d’autres espaces de noms
- L’interaction sécurisée avec des objets globaux
- Une amélioration des performances
- Une meilleure prise en charge des bibliothèques JavaScript tierces
- La compatibilité avec la norme JavaScript au fil de son évolution
Vous savez donc maintenant que les composants Web Lightning sont conçus pour être plus sécurisés. Mais comment pouvez-vous bénéficier de leur utilisation et recréer vos fonctionnalités de bouton JavaScript dans Lightning Experience ? Nous allons rapidement vous montrer. Mais avant tout, voyons comment vous pourriez utiliser des boutons JavaScript dans Salesforce Classic.
Ce que les gens font avec les boutons JavaScript
De nombreux clients nous ont exposé leur situation, certains d’entre eux disposant de centaines de boutons JavaScript dans leurs organisations. Nous avons également discuté avec nos partenaires de leurs scénarios d’utilisation de boutons JavaScript. Nous avons ensuite réuni ce que nous en avons appris dans un ensemble plus large d’opérations. Voici les scénarios d’utilisation de boutons JavaScript les plus courants.
- Utiliser ou manipuler les valeurs d’un enregistrement avant de les stocker.
- Valider des champs : veiller à ce que les valeurs soient fournies et/ou respectent certains critères
- Préremplir des valeurs en fonction des entrées d’autres champs
- Rediriger vers une page Visualforce en fonction des valeurs entrées
- Afficher des écrans contextuels de confirmation
- Créer des enregistrements dont les valeurs sont préremplies.
- Déclencher des flux intégrés à Flow Builder.
- Invoquer Salesforce ou des API externes.
- Intégrer les boutons à des produits de fournisseurs tiers.
- Exécuter des actions de masse sur les enregistrements d’une liste.
- Diriger les méthodes et procédures via des écrans contextuels de commentaires à l’attention des utilisateurs.
D’autres scénarios existent, et certains d’entre eux sont tellement spécifiques à l’organisation concernée qu’ils sont inclassables. Nous allons ensuite examiner les fonctionnalités utiles pour traiter tous les scénarios d’utilisation que nous avons évoqués, et migrer vos fonctionnalités de bouton JavaScript vers l’application mobile Salesforce et Lightning Experience.