Je souhaite révoquer les droits d’administrateur pour un seul profil, mais le bouton « révoquer » n’apparaît pas. D’autres comptes « Staff » sur mon site affichent ce bouton.
Auriez-vous une idée de la raison et de la manière de résoudre ce problème ?
L’email de ce compte existe-t-il dans votre fichier app.yml en tant que développeur ? Ou avez-vous accordé des permissions de développeur via la console ?
Les utilisateurs répertoriés dans le fichier de build .yml en tant que DEVELOPERS ne peuvent pas être supprimés via l’interface utilisateur pour des raisons de sécurité :
## TODO: Liste d'emails séparés par des virgules qui seront définis comme administrateurs et développeurs
## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: `incredible_undeletables@myamazingdomain.com'
Vous devrez les retirer du fichier de build .yml et reconstruire l’application.
Une autre solution, bien que non recommandée et non prise en charge (je suppose), consiste à modifier leur statut d’administrateur (booléen) dans la table users pour cet utilisateur à FALSE, directement dans la base de données. Note : je ne l’ai jamais fait (je n’ai jamais révoqué, mais j’ai ajouté des modérateurs de cette manière), mais manipuler directement la base de données avec des éléments que vous ne maîtrisez pas totalement peut avoir des conséquences imprévues. Cette méthode n’est donc pas conseillée sauf en dernier recours (et assurez-vous à 100 % d’avoir une sauvegarde fonctionnelle de la base de données avant de procéder !).
Vérifiez votre fichier .yml… le problème s’y trouve plus que probablement.
Dans ce cas, vous pourriez essayer directement dans la base de données quelque chose comme ceci :
update users set admin = false where username = 'nom_de_l_utilisateur_problematic';
où :
‘nom_de_l_utilisateur_problematic’ est une chaîne de caractères.
et :
false est un booléen.
C’est ce que je ferais si j’avais un utilisateur problématique avec des privilèges d’administrateur et que je devais les révoquer, mais que je ne pouvais pas le faire depuis le panneau d’administration.
Une supposition hasardeuse — auriez-vous par hasard personnalisé Discobot et l’avez-vous renommé en Newsbot ? Le bot est considéré comme un utilisateur système, et vous ne pouvez pas révoquer son statut d’administrateur.
Vous pouvez vérifier si Newsbot est bien discobot en allant sur sa page de profil et en vérifiant son adresse e-mail :
Oui, c’est exactement ce que nous avons fait. Ce profil Discobot a été utilisé pour importer des flux RSS, que nous souhaitons désormais supprimer. Le profil peut rester, je veux simplement que tous les messages/sujets soient supprimés.
Je ne suis pas développeur, donc des étapes simples seraient grandement appréciées, s’il vous plaît.
OK, donc vous ne vous souciez pas vraiment du statut d’administrateur ici. Votre objectif est la suppression des publications ? Pour une suggestion future, faites-nous savoir quel est votre objectif final, et non l’étape actuelle que vous pensez utile pour y parvenir.
Je ne pense pas que nous ayons une tâche rake pour supprimer toutes les publications d’un utilisateur spécifique. Laissez-moi tester quelques choses, je reviens vers vous.
OK. Ce qui suit vous permettra de supprimer toutes les publications d’un utilisateur. Vous aurez besoin d’un accès au serveur.
Connectez-vous en SSH au serveur où Discourse est en cours d’exécution.
Accédez à la console Rails de votre instance Discourse.
cd /var/www/discourse
sudo ./launcher enter app
rails c
Obtenez l’ID de l’utilisateur que vous souhaitez supprimer, puis détruisez toutes ses publications. Cela suppose que le nom d’utilisateur est newsbot ; si ce n’est pas le cas, assurez-vous de modifier la commande,
id = User.find_by_username('newsbot').id
Post.where(user_id: id).each do |p|
PostDestroyer.new(Discourse.system_user, p).destroy
end;