Publication forcée dans une catégorie restreinte

Bonjour,

J’utilise Discourse via l’API comme backend pour une communauté. Certaines catégories doivent être restreintes pour les utilisateurs réguliers afin qu’ils ne puissent pas créer de sujets ni modifier les titres de ces derniers. Cependant, ils doivent pouvoir consulter les discussions et y répondre. Tout cela doit être réalisé via l’API (en utilisant un jeton d’administrateur) au nom de ces utilisateurs. Existe-t-il un moyen de mettre cela en œuvre en respectant les bonnes pratiques de sécurité et en utilisant les appels API appropriés ? Par exemple, il suffirait de pouvoir créer de force un message dans une catégorie restreinte au nom d’un utilisateur régulier (en utilisant une clé ou un compte administrateur), mais je ne trouve pas ce cas dans la documentation de l’API.

Merci beaucoup !

L’API ne sera vraiment pas documentée pour votre cas d’utilisation, car elle n’est pas du tout prise en charge (bien que j’aie au moins un client qui fait quelque chose de similaire). Comment faire de l’ingénierie inverse de l’API Discourse est probablement le meilleur que vous puissiez obtenir, ainsi que discourse/config/routes.rb at main · discourse/discourse · GitHub.

Si vous utilisez une clé API d’administrateur, toutes les restrictions sont levées, vous devriez donc pouvoir créer le sujet. Ou peut-être créer le sujet en tant qu’utilisateur, puis le déplacer vers la catégorie dans laquelle vous ne voulez pas qu’il puisse publier ?

1 « J'aime »

Merci. Je connais le processus de rétro-ingénierie, mais il n’existe aucun cas d’utilisation similaire côté front-end de Discourse à intercepter. Je veux dire que, même si je suis connecté en tant qu’administrateur, il n’y a aucun moyen de créer un sujet en tant qu’un autre utilisateur.

La solution de contournement que j’ai mise en place pour le moment consiste à autoriser tout le monde à voir/commenter dans une catégorie spécifique, tandis que les administrateurs peuvent voir/commenter/créer. Ainsi, les sujets sont créés uniquement par le « système » (ce qui empêche les utilisateurs de modifier les titres), accompagnés d’un message d’origine modèle. Ensuite, je peux utiliser la clé API pour commenter en tant que différents utilisateurs dans ces sujets créés.

Je pense que l’autre groupe que j’aidait avait des utilisateurs se connectant à Discourse (via SSO, peut-être ?) pour agir en leur propre nom. De cette façon, vous bénéficiez de toutes les protections utilisateur offertes par Rails. Tout faire avec une seule clé API d’administration semble être une recette pour le désastre.

Mais je suppose que, pour résoudre votre problème actuel, vous devriez créer le sujet en tant qu’admin, puis en changer la propriété. Cela devrait être raisonnablement simple. (Et ensuite espérer que rien ne se passe mal entre le début et la fin de toute la transaction.)

Une autre possibilité serait de créer un plugin personnalisé qui ajouterait une route create-as-user (je n’ai pas examiné les routes que j’ai liées plus tôt pour voir si cela existe déjà d’une manière ou d’une autre.)

Mais plus j’y réfléchis (en sachant que je ne connais rien à ce que vous faites réellement, bien sûr), plus je pense que vous voulez que votre interface de connexion se connecte en tant qu’utilisateurs afin qu’elle puisse interagir avec l’API en tant qu’utilisateur.