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); }