Discourse が戻ってきました
ほぼ完了です!abc@gmail.com にアクティベーションメールを送信しました。メール内の指示に従ってアカウントを有効化してください。
届かない場合は、スパムフォルダをご確認ください。
というメッセージが表示されますが、メールアドレスが存在している場合でも同様です。コードに変更を加え、userController の create メソッドでアクティベーションメッセージを「User Activated」とハードコードしました。それでも上記のメッセージが表示されます。どなたかご助力いただけますでしょうか?
申し訳ありませんが、何を書かれているのか理解できませんでした。
詳しく説明します。
まず、私たちの要件は以下の通りです。DB から大量のユーザーを Discourse に登録する必要があります。そのため、Web アプリで Firebase を通じてユーザーの Discourse アカウントを有効化しているため、メールによるアカウント有効化を許可することはできません。
そこで、Discourse のコードを調査し、userController の activate 関数でメール送信を行う部分をコメントアウトし、そこで直接ユーザーを有効化するように変更しました。その結果、以下のようなレスポンスが返されるようになりました。
success: true,
active: true,
message: "User activated",
user_id: user.id
しかし、昨日から以下のレスポンスが返されるようになりました。
success: true,
active: false,
message: ‘You’re almost done! We sent an activation mail to abc@gmail.com . Please follow the instructions in the mail to activate your account.If it doesn’t arrive, check your spam folder’
ユーザー登録 API が create 関数を呼び出しているかどうかを確認する方法、あるいはこの問題を引き起こしているキャッシュの有無について、ご教示いただけますでしょうか。
simon
2019 年 8 月 1 日午後 4:49
4
プラグイン内で変更を加えている場合を除き、Discourse を更新すると、Discourse のコードに対して行った変更は上書きされてしまいます。これが原因ではないでしょうか?
どのプラグインのことをおっしゃっていますか?私が変更したのは、discourse コード内の users_controller だけです。コードについてお手伝いいただけますか?コードを使ってデバッグしたいので、ユーザー登録のルートがどこにあるか教えていただけますか。正確には /u か /u.json です。
また、userController で print を使って何かをログ出力した場合、ターミナルでそのログを確認できるはずです。現在、確認できていません。
問題の原因が分かりました。ペイロードから正しい password_confirmation と challenge を送信していなかったため、不審なリクエストと判定されていました。必要な変更を加えたところ、現在は正常に動作しています。ただ、これら2つのパラメータが常に変化する理由、その背後にあるロジックが気になります。