Cookies
Transmettez les données des visiteurs à votre documentation via un cookie public ou signé
Mis à jour
Ce contenu vous a-t-il été utile ?
Ce contenu vous a-t-il été utile ?
import * as jose from 'jose';
import { Request, Response } from 'express';
import { getUserInfo } from '../services/user-info-service';
import { getFeatureFlags } from '../services/feature-flags-service';
const GITBOOK_VISITOR_SIGNING_KEY = process.env.GITBOOK_VISITOR_SIGNING_KEY;
const GITBOOK_VISITOR_COOKIE_NAME = 'gitbook-visitor-token';
export async function handleAppLoginRequest(req: Request, res: Response) {
// Votre logique métier pour gérer la requête de connexion
// Par exemple, vérifier les identifiants et authentifier l’utilisateur
//
// par exemple :
// const loggedInUser = await authenticateUser(req.body.username, req.body.password);
// Après authentification de l’utilisateur, récupérez les informations utilisateur que vous souhaitez
// transmettre à GitBook depuis votre base de données ou votre service utilisateur.
const userInfo = await getUserInfo(loggedInUser.id);
// Construire la charge utile du JWT avec les informations de l’utilisateur
const gitbookVisitorClaims = {
firstName: userInfo.firstName,
lastName: userInfo.lastName,
isBetaUser: userInfo.isBetaUser
products: userInfo.products.map((product) => product.name),
featureFlags: await getFeatureFlags({userId: loggedInUser.id})
}
// Générer un JWT signé à l’aide des revendications
const gitbookVisitorJWT = await new jose.SignJWT(gitbookVisitorClaims)
.setProtectedHeader({ alg: 'HS256' })
.setIssuedAt()
.setExpirationTime('2h') // expiration arbitraire de 2 heures
.sign(GITBOOK_VISITOR_SIGNING_KEY);
// Incluez un cookie `gitbook-visitor-token` contenant le JWT encodé dans votre
// réponse du gestionnaire de connexion
res.cookie(GITBOOK_VISITOR_COOKIE_NAME, gitbookVisitorJWT, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
maxAge: 2 * 60 * 60 * 1000, // expiration arbitraire de 2 heures
domain: '.acme.org' //
});
// Reste de la logique de votre gestionnaire de connexion, y compris la redirection de l’utilisateur vers votre application
res.redirect('/'); // Exemple de redirection
}