API経由でのGrant_Admin / Revoke_adminの修正が必要です

確認メールを無効にする設定か、管理者権限の剥奪に関する確認メールの必要性のどちらかが必要です。API を通じて管理者を変更する機能を設定したところ、システム上では実用的に使用できず、自分自身のアカウントを含む複数のアカウントで管理者権限を失ってしまいました。これは確認メールが必要とされるためですが、なぜかシステム側には確認用のメールが存在しませんでした。また、管理者権限の剥奪には確認メールは全く不要です。

できれば、API 経由での操作において確認を無効にする設定を設けていただければと強く希望します。

自分のサイトでこれをテストしてみました。API を介して管理者権限を取り消すには、https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin に対して PUT リクエストを送信します。試したところ、管理者権限は取り消され、メールの確認は不要でした。ただし、このリクエストに対する Discourse のレスポンスにはいくつかの問題が見つかりました。

ユーザーがすでに管理者権限を持っている場合、API を介して権限を取り消すと、成功メッセージの代わりに空のレスポンスが返されます。

ユーザーが管理者権限を持っていない場合、https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin に対して PUT リクエストを送ると HTML レスポンスが返され、https://forum.yourdomain.com/admin/users/<user_id>/revoke_admin.json に対してリクエストを送ると invalid access エラーが返されます。

このルートに対して、成功および失敗に関する情報を含むメッセージが返されるようにすると良いでしょう。

確認メールなしで管理者権限を付与できるようにすることについては、確信が持てません。現在の仕組みは、セキュリティの追加レイヤーを提供することを意図して設計されています。

「いいね!」 3

まさに、取り消し(revoke)に確認が必要ないことと、付与(grant)に確認が必要であることの問題点です。これに気づいていないと、Discourseのすべての管理者を誤って取り消し、元に戻す手段が全くなくなってしまう可能性があります。

もし何かを検証するために確認を必須にするなら、もう一方の操作にも同様に検証が必要であるべきです。

また、この検証を無効にする機能もありません。そのため、すべての権限を持つ管理者がいて、APIを通じて直接管理者権限を付与することも可能です。