Retour d'expérience sur la nouvelle File d'attente de revue (2019)

Vous avez raison. L’erreur de tri de la file d’examen se produit parce qu’il reste des éléments à examiner d’Akismet dans la base de données après la suppression du plugin. Je vois deux solutions possibles ici :

  1. Fournir une tâche Rake pour supprimer ces lignes de la base de données avant que l’utilisateur ne décide de supprimer définitivement le plugin.
  2. Appliquer une portée par défaut à la classe Reviewable qui exclut ces lignes si le plugin est désactivé.

Qu’en pensez-vous ?

4 « J'aime »

Autre point : les images semblent invisibles dans l’aperçu de l’éditeur si vous modifiez un sujet ou une publication en file d’attente.

2 « J'aime »

Cela se produit-il lorsque le message est en attente de modération ? Ou après son rejet ? Comme je l’ai dit précédemment, les téléversements de messages mis en file d’attente et rejetés sont automatiquement supprimés par le système.

3 « J'aime »

Oui, c’est quand ils sont en attente de révision @Roman, les images sont invisibles pour moi dans l’aperçu de l’éditeur.

2 « J'aime »

Je pense que la désinstallation de plugins est rare, et que la gestion par défaut des scopes est plus susceptible d’introduire des bugs.

Je trouve raisonnable d’ajouter une tâche Rake, puis de la documenter dans le README dans une section « Désinstallation » avec les instructions pour l’exécuter afin de supprimer les anciennes données. Faisons cela !

4 « J'aime »

J’ai essayé de désactiver « notifier après les publications en file d’attente » en le réglant sur 0 et aussi sur 2000000000. Je reçois toujours de nombreuses notifications fréquentes du type « x éléments doivent être examinés ». :face_with_monocle:


1 « J'aime »

Le système les envoie car il y a des éléments en attente dans la file d’attente. Le paramètre que vous avez modifié concerne les rappels pour les publications en file d’attente ; définissez notify_about_flags_after sur 0 à la place.

6 « J'aime »

Cette tâche est désormais disponible. Vous pouvez supprimer tous les enregistrements liés au plugin de la base de données en exécutant :

bundle exec rake akismet_uninstall:delete_reviewables

Assurez-vous d’avoir le plugin installé et d’avoir lu la section de désinstallation du README :

7 « J'aime »

Merci @Roman - je peux confirmer que la modification de notify_about_flags_after à 0 a arrêté les notifications :smiley:

Je vous remercie vraiment d’avoir ajouté cette tâche rake ! Je réinstallerai Akismet et exécuterai la tâche rake plus tard aujourd’hui, lorsque le trafic sera à son point le plus bas, puis je mettrai à jour ce post avec les résultats.

4 « J'aime »

Avez-vous des réflexions à ce sujet ? @Roman @eviltrout

Il semble que les utilisateurs dont les publications sont envoyées directement dans la file d’examen puissent contourner un certain nombre de limites de taux pour la création de sujets et de publications/réponses.

Options de limite de taux qui semblent contournables :
limite de taux création de sujet, limite de taux création de sujet par nouvel utilisateur, nombre maximal de sujets par jour, limite de taux création de publication, limite de taux création de publication par nouvel utilisateur, intervalle minimal entre des publications uniques, nombre maximal de réponses consécutives.

Ainsi que la prévention du rehaussement avec le plugin no bump : Discourse No Bump - #26

Options pour envoyer des sujets et des publications directement dans la file d’examen :
« nombre de publications à approuver » (les nouveaux utilisateurs doivent faire approuver leurs premiers sujets/publications), ainsi que les options individuelles par catégorie « Nécessiter l’approbation d’un modérateur pour tous les nouveaux sujets » et très probablement (j’ai uniquement testé l’option pour les nouveaux sujets) « Nécessiter l’approbation d’un modérateur pour toutes les nouvelles réponses ».

1 « J'aime »

Oui, c’est prévu ainsi. Si votre message est examiné et jugé acceptable, il sera publié, indépendamment des limites.

7 « J'aime »

Ahh, je vois. Merci pour l’explication. Je vais simplement partager mon expérience à titre de référence.

Sans que les limites soient appliquées, cela permet aux nouveaux utilisateurs (avec un nombre de publications approuvées) d’inonder librement la file d’attente de modération avec aucune limite ou des limites minimales, tandis que les comptes plus anciens et de confiance sont limités par les restrictions de taux. Sauf lorsque les options de catégorie pour approuver tous les sujets ou réponses sont activées, auquel cas les utilisateurs de confiance plus anciens n’ont également aucune limite ou des limites minimales.

Ce serait beaucoup de travail, mais tout à fait réalisable d’approuver tous les nouveaux sujets, ainsi que les premiers sujets/publications créés par les nouveaux utilisateurs (s’ils sont soumis à des restrictions de taux), mais c’est presque irréalisable dans mon cas lorsque les utilisateurs peuvent inonder la file d’attente.

Quoi qu’il en soit, merci beaucoup pour la précision indiquant que cela est prévu par conception. C’est très utile. Je pense que je vais réviser ma stratégie et désactiver les options qui envoient directement les sujets ou publications dans la file d’attente de modération, en la réservant principalement au contenu signalé. Ensuite, modérer simplement les soumissions en direct soumises à des restrictions de taux a posteriori devrait bien fonctionner et être plus dynamique pour les utilisateurs aussi.

1 « J'aime »

So I went ahead and reinstalled Akismet and ran the rake task. My process was:

cd /var/discourse
./launcher enter app
bundle exec rake akismet_uninstall:delete_reviewables

I received an error unfortunately, tried running it a few times:

rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  Peer authentication failed for user "discourse"
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:50:in `rescue in postgresql_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:33:in `postgresql_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:887:in `new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `checkout_new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:910:in `try_to_checkout_new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:871:in `acquire_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_handling.rb:189:in `connection'
/var/www/discourse/lib/site_settings/db_provider.rb:61:in `table_exists?'
/var/www/discourse/lib/site_settings/db_provider.rb:16:in `all'
/var/www/discourse/lib/site_settings/defaults_provider.rb:29:in `db_all'
/var/www/discourse/lib/site_setting_extension.rb:287:in `block in refresh!'
/var/www/discourse/lib/site_setting_extension.rb:284:in `synchronize'
/var/www/discourse/lib/site_setting_extension.rb:284:in `refresh!'
/var/www/discourse/lib/site_setting_extension.rb:505:in `block in setup_methods'
/var/www/discourse/config/initializers/004-message_bus.rb:120:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:318:in `block in load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:318:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:666:in `block in load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/notifications.rb:182:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:665:in `load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:625:in `block (2 levels) in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:624:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:624:in `block in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:50:in `tsort_each_child'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:363:in `initialize!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:324:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:339:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:523:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

Caused by:
PG::ConnectionBad: FATAL:  Peer authentication failed for user "discourse"
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `new'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `connect'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:46:in `postgresql_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:887:in `new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `checkout_new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:910:in `try_to_checkout_new_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:871:in `acquire_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:593:in `checkout'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:437:in `connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1119:in `retrieve_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_handling.rb:221:in `retrieve_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_handling.rb:189:in `connection'
/var/www/discourse/lib/site_settings/db_provider.rb:61:in `table_exists?'
/var/www/discourse/lib/site_settings/db_provider.rb:16:in `all'
/var/www/discourse/lib/site_settings/defaults_provider.rb:29:in `db_all'
/var/www/discourse/lib/site_setting_extension.rb:287:in `block in refresh!'
/var/www/discourse/lib/site_setting_extension.rb:284:in `synchronize'
/var/www/discourse/lib/site_setting_extension.rb:284:in `refresh!'
/var/www/discourse/lib/site_setting_extension.rb:505:in `block in setup_methods'
/var/www/discourse/config/initializers/004-message_bus.rb:120:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:55:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:318:in `block in load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:318:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:666:in `block in load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/notifications.rb:182:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:665:in `load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:625:in `block (2 levels) in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:624:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/engine.rb:624:in `block in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:50:in `tsort_each_child'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:363:in `initialize!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.1/lib/active_support/dependencies.rb:324:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:339:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.1/lib/rails/application.rb:523:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => akismet_uninstall:delete_reviewables => environment
(See full trace by running task with --trace)
1 « J'aime »

Pourriez-vous essayer de basculer vers l’utilisateur discourse en exécutant su discourse avant d’exécuter la tâche ?

4 « J'aime »

Merci @Roman ! C’est très apprécié :slight_smile:

J’ai réessayé en utilisant su discourse avant d’exécuter la tâche rake et cela a fonctionné parfaitement. :tada:

Le tri par « Date de création (inverse) » fonctionne également bien maintenant.

3 « J'aime »

J’ai récemment activé le paramètre de site « invitation uniquement » et maintenant, un élément généré par le système apparaît dans la file d’examen pour un compte utilisateur, marqué comme « Nécessite une approbation ».

Le fait étrange est qu’il s’agit d’un compte existant (âgé de 4 ans) avec plusieurs publications et un niveau TL2, mais qui n’a pas été actif récemment (la dernière publication remonte à 2 ans). Cependant, il s’est connecté aujourd’hui, ce qui a déclenché le drapeau d’examen.

Je n’ai pas encore utilisé la fonction « Approuver l’utilisateur », et l’élément est toujours dans la file d’examen, mais il semble que le compte soit activé et capable d’utiliser le forum (comme il se doit).

Il semble que la file d’examen identifie les comptes récemment réactivés comme de nouveaux comptes et les marque pour examen lorsque le mode « invitation uniquement » est activé ?

Édition : cela vient également de se produire pour un compte très récent, créé seulement quelques jours avant l’activation de ce paramètre.

1 « J'aime »

Je pense avoir déjà vu cela lorsque vous passez en mode « uniquement sur invitation ». Dans certains cas, Discourse estime que vous devez approuver l’utilisateur car il a obtenu un accès au site en s’inscrivant normalement. Lorsque ce commutateur est modifié, son enregistrement ne comporte aucun indicateur « Approuvé ».

3 « J'aime »

J’ai approfondi l’enquête et la seule chose que ces comptes (au total quatre) ont en commun est qu’ils se sont tous connectés en utilisant l’un des chemins de connexion par e-mail (via forgot_password ou directement par email_login) après que le mode invite_only ait été activé.

2 « J'aime »

Y a-t-il eu des réflexions sur l’ajout de la suspension aux sujets/messages de modération signalés par Akismet ? Cela a été suggéré sur notre instance, simplement parce que nous utilisons l’authentification unique (SSO), si bien que la suppression des membres sert rarement à quelque chose : le membre peut simplement se reconnecter à son compte chez le fournisseur principal et se retrouver instantanément connecté sur les forums pour continuer sa route. La suspension les oblige à faire plus d’efforts, car ils doivent créer un nouveau compte chez le fournisseur avec une nouvelle adresse e-mail.

Je sais, c’est une demande un peu étrange, mais une question que mes modérateurs posent assez fréquemment. Aujourd’hui, ils doivent parcourir manuellement le système pour suspendre l’utilisateur, ce qui leur crée un travail supplémentaire, mais cela en vaut la peine car l’utilisateur finit par ne pas vouloir sacrifier une autre adresse e-mail.

6 « J'aime »

Je pense qu’il faudrait plutôt un bouton déroulant que d’ajouter une multitude de boutons supplémentaires.

4 « J'aime »