Grant_Admin / Revoke_admin через API требует доработки

Либо необходимо добавить НАСТРОЙКУ для отключения подтверждающих писем, либо ввести подтверждение для отмены прав администратора. Я настроил изменение прав администратора через API, но не смог использовать эту функциональность в системе из-за потери прав администратора на своей учётной записи, а также на нескольких других, поскольку система требовала подтверждения по электронной почте, которого, каким-то образом, не было. При этом подтверждение для отмены прав абсолютно не нужно.

Я бы предпочёл, чтобы существовала настройка для отключения подтверждения на уровне API.

Я только что протестировал это на своём сайте. Отзыв прав администратора через API осуществляется путём отправки PUT-запроса на https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin. Когда я делаю это, права администратора отзываются, и подтверждение по электронной почте не требуется. Однако я обнаружил несколько проблем с ответом, который Discourse возвращает для этого запроса.

Если пользователь имеет права администратора, при их отзыве через API я получаю пустой ответ вместо сообщения об успехе.

Если пользователь не имеет прав администратора, я получаю HTML-ответ, если PUT-запрос отправлен на https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin, и ошибку invalid access, если запрос отправлен на https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin.json.

Было бы полезно получать информативные сообщения об успехе и неудаче для этого маршрута.

Я не уверен насчёт возможности предоставления прав администратора без подтверждения по электронной почте. Текущий механизм работы задуман как дополнительный уровень безопасности.

3 лайка

Вот в чём именно проблема: отмена прав не требует подтверждения, а их выдача — требует. Если вы об этом не знаете, то случайно можете отозвать права у ВСЕХ администраторов вашего Discourse, и у вас не останется никаких способов их вернуть…

Если вы делаете подтверждение обязательным для выдачи прав, то и для их отмены оно тоже должно быть.

Также нет возможности отключить эту проверку, поэтому, если у вас есть администратор со всеми правами, вы можете выдать права администратора напрямую через API.