From f1f1b45c919cd729a1bd1261aa10443e71860707 Mon Sep 17 00:00:00 2001 From: Alexandre Bove Date: Tue, 29 Jul 2025 10:22:32 +0200 Subject: [PATCH] removed personal access token on logto --- src/graphql/features/User/resolver.ts | 34 ++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/graphql/features/User/resolver.ts b/src/graphql/features/User/resolver.ts index ef38358..8e30825 100644 --- a/src/graphql/features/User/resolver.ts +++ b/src/graphql/features/User/resolver.ts @@ -737,9 +737,37 @@ export const resolvers = { async logout(_: unknown, __: unknown, context: GraphQLContext): Promise { try { - // Ici, vous pouvez ajouter des logiques de nettoyage si nécessaire - // Par exemple, supprimer le token d'accès personnel du cache - if (context.personalAccessToken) { + // Supprimer le PAT dans Logto si présent + if (context.personalAccessToken && context.userId) { + try { + const m2mToken = await getLogtoAccessToken(); + // Lister les PATs pour l'utilisateur + const listResponse = await axios.get( + `${process.env.LOGTO_ENDPOINT}/api/users/${context.userId}/personal-access-tokens`, + { + headers: { + Authorization: `Bearer ${m2mToken}`, + "Content-Type": "application/json", + }, + } + ); + const pats = listResponse.data; + // Trouver le PAT à supprimer par sa valeur + const patToDelete = pats.find((pat: { value: string }) => pat.value === context.personalAccessToken); + if (patToDelete && patToDelete.name) { + await axios.delete( + `${process.env.LOGTO_ENDPOINT}/api/users/${context.userId}/personal-access-tokens/${patToDelete.name}`, + { + headers: { + Authorization: `Bearer ${m2mToken}`, + "Content-Type": "application/json", + }, + } + ); + } + } catch (error) { + console.error("Erreur lors de la suppression du PAT dans Logto:", error); + } context.patCache.remove(context.personalAccessToken); }