Documentation
Premiers pas
Démarrage rapide

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.

secrecy.ts
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.

secrecy.ts
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.

user.ts
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. login et getSecrecyClient utilisent window et 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 setup avant tout le reste. Le helper getClient ci-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 sur path avec les identifiants dans l'URL. Appeler getSecrecyClient sur cette page (comme le fait getClient) les consomme.
  • Choisissez où vit la session. Par défaut, les identifiants sont conservés dans le localStorage et survivent à un redémarrage du navigateur. Passez { session: true } à getSecrecyClient et à login pour les conserver dans le sessionStorage à la place.

Étapes suivantes

  • Secrecy auth : toutes les options de login et getSecrecyClient, 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.