Démarrage rapide
Ce guide vous mène d'un @secrecy/lib installé à un client authentifié et à l'utilisateur courant. Le code est en TypeScript pur et ne dépend d'aucun framework d'interface : intégrez-le à votre application comme vous le souhaitez.
Vous utilisez JavaScript ? Le code est identique, il suffit de retirer les annotations de type.
Initialiser le SDK
Appelez setup une fois, avant tout autre appel au SDK. Il charge la bibliothèque cryptographique utilisée pour chiffrer et déchiffrer sur l'appareil de l'utilisateur.
import { setup } from '@secrecy/lib';
await setup();Obtenir un client authentifié
La fonction getSecrecyClient reconstruit un client à partir des identifiants enregistrés lors d'une connexion précédente. S'il n'y en a pas, la fonction login envoie l'utilisateur vers le SSO Secrecy puis le ramène vers votre application.
Gardez un seul client pour toute l'application : encapsulez-le dans un petit module et importez ce module partout où vous en avez besoin.
import {
getSecrecyClient,
login,
type SecrecyClient,
setup,
} from '@secrecy/lib';
let client: SecrecyClient | null = null;
export const getClient = async (): Promise<SecrecyClient | null> => {
if (client !== null) {
return client;
}
await setup();
// Réutiliser les identifiants enregistrés par une connexion précédente
client = getSecrecyClient();
if (client !== null) {
return client;
}
// Sinon, envoyer l'utilisateur vers le SSO Secrecy.
// Avec `redirect: true`, la page est quittée et la promesse résout `null` ;
// au retour, `getSecrecyClient` récupère les identifiants renvoyés.
client = await login({
appId: '<YOUR_APP_ID>',
redirect: true,
path: window.location.pathname,
scopes: { email: true },
});
return client;
};Récupérer l'utilisateur courant
Une fois le client obtenu, client.me renvoie l'utilisateur connecté sous forme de SelfUser.
import type { SelfUser } from '@secrecy/lib';
import { getClient } from './secrecy';
export const getCurrentUser = async (): Promise<SelfUser | null> => {
const client = await getClient();
return client !== null ? await client.me() : null;
};Intégrer le SDK à votre application
Le SDK fonctionne de la même façon quelle que soit votre stack. Gardez ces règles en tête lors de l'intégration :
- Exécutez-le dans le navigateur.
loginetgetSecrecyClientutilisentwindowet le stockage du navigateur. Si votre application fait du rendu côté serveur, appelez-les depuis du code exécuté uniquement côté client. - Appelez
setupavant tout le reste. Le helpergetClientci-dessus s'en charge. - Créez le client une seule fois et partagez-le. Utilisez un module comme
secrecy.ts, l'état de votre application ou de l'injection de dépendances, plutôt que de créer un nouveau client à chaque fois. - Gérez le retour de la redirection. Après
login({ redirect: true }), l'utilisateur revient surpathavec les identifiants dans l'URL. AppelergetSecrecyClientsur cette page (comme le faitgetClient) les consomme. - Choisissez où vit la session. Par défaut, les identifiants sont conservés dans le
localStorageet survivent à un redémarrage du navigateur. Passez{ session: true }àgetSecrecyClientet àloginpour les conserver dans lesessionStorageà la place.
Étapes suivantes
- Secrecy auth : toutes les options de
loginetgetSecrecyClient, le flux en popup et la déconnexion. - Concepts : comment sessions, identités et chiffrement s'articulent.
- Référence API : toutes les classes, fonctions et types exportés par
@secrecy/lib.