oca
1
こんにちは。
別のアプリから提供されたメールアドレスのリストにあるユーザーを照合し、それらすべてのユーザーを1つのグループに追加して、リストに含まれていないメンバーを削除したいと思います。APIからこれを行うスクリプトがあります。
削除部分は簡単です。各メンバーについて、次を使用してすべてのメールアドレスを抽出します。
get(/u/{username}/emails.json)
そして、それらをリストと照合します。一致するものがない場合、メンバーは除外されます。
追加する方がトリッキーです。各メールアドレスについて、そのアドレスを持つユーザーがいるかどうかを確認したいと思います。いる場合は、グループに追加します。いない場合は、招待を送信したくありません。コマンドを使用します。
get(/admin/users/list/all.json?email={email})
しかし、このコマンドは、そのアドレスをプライマリとして持つユーザーのリストを返しますが、そのアドレスをセカンダリ、unconfirmed_emails、またはassociated_accountsとして持つユーザーは返しません。すべての可能なメールアドレスからフィルタリングする方法はありますか、それともすべてのユーザーのリストをエクスポートして外部で手動で行う必要がありますか?データ漏洩のリスクを減らすために、内部で行うことを好みます。
ありがとうございます!
oca
3
ありがとうございます。
このプラグインと、次のクエリを使用して実現できました。
--[params]
-- string :q_email
SELECT u.username FROM users u JOIN user_emails e ON u.id=e.user_id WHERE e.email = :q_email
そして、次のPythonスクリプトで呼び出しました。
import pydiscourse
client = DiscourseClient('https://forum.com', api_username='system', api_key='1234')
params = '{"q_email":"' + str(email) + '"}'
response = client._request('POST', '/admin/plugins/explorer/queries/{number}/run', params={"params":params}) # はい、3つのパラメータがあり、それぞれが異なるものを表しています。優れたハッキングの実践です!
username=response["rows"]
「いいね!」 1
system
(system)
クローズされました:
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.