Supprimer un utilisateur via l'API Discourse

Les comptes d’utilisateurs peuvent également être supprimés via l’API Discourse.

Par exemple ;

DELETE /admin/users/{id}.json HTTP/1.1

Content-Type: application/json
Api-Username: system
Api-Key: 1234*******

{
  "delete_posts": true,
  "block_email": false,
  "block_urls": false,
  "block_ip": false
}

* La requête est simplifiée pour plus de lisibilité.

Comme vous pouvez le constater, les options de charge utile permettent de supprimer les publications générées par l’utilisateur dans la même requête, contrairement à la suppression des publications avant la suppression du compte lorsque les comptes sont supprimés manuellement sur la page d’administration.


Cependant, je reçois une erreur 403 « accès refusé » pour cette requête, même si la clé API a une portée globale et que l’utilisateur est system :

{
  "errors": ["Vous n'êtes pas autorisé à consulter la ressource demandée."],
  "error_type": "invalid_access"
}

Est-ce que cela fonctionne si vous modifiez les valeurs des paramètres mentionnés dans le guide ? Les valeurs par défaut pourraient bloquer la suppression de l’utilisateur. Pas certain à 100 %.

Je ne suis pas sûr des spécificités de l’utilisateur que vous essayez de supprimer, mais l’erreur que vous rencontrez provient probablement d’une ou plusieurs des vérifications suivantes qui n’ont pas été satisfaites.

Le plus probable est que ce soit quelque chose dans le bloc else. Et oui, je suis d’accord, le message d’erreur pourrait certainement être moins vague :grimacing:.

4 « J'aime »

Exactement @selase ! Il semble que mon utilisateur ait plus de messages que User::MAX_STAFF_DELETE_POST_COUNT et que certains soient plus anciens que SiteSetting.delete_user_max_post_age :slight_smile:

  • delete_user_max_posts : a dû être renommé en delete_user_self_max_post_count depuis la publication de l’article. Il est défini sur 1 (par défaut)

    Le nombre maximum de messages qu’un utilisateur peut avoir tout en autorisant la suppression de compte en libre-service. Défini sur -1 pour désactiver la suppression de compte en libre-service.

  • delete_user_max_post_age est défini sur 60 (par défaut), et l’utilisateur a des messages de plus de 60 jours.

    N’autorise pas la suppression des utilisateurs dont le premier message est plus ancien que (x) jours.

  • delete_all_posts_max est défini sur 15 (par défaut), et mon utilisateur a 12 messages

    Le nombre maximum de messages qui peuvent être supprimés en une seule fois avec le bouton Supprimer tous les messages. Si un utilisateur a plus que ce nombre de messages, les messages ne peuvent pas tous être supprimés en une seule fois et l’utilisateur ne peut pas être supprimé.

Une fois que j’ai éliminé les restrictions, j’ai pu supprimer mon utilisateur via l’appel API.

{"deleted":true}

:grin:

Et peut-être que la documentation de l’API pourrait aussi mentionner cette exigence, peut-être ?

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.