Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discord認証ができるようにする #7436

Merged
merged 26 commits into from
Apr 3, 2024

Conversation

yocchan-git
Copy link
Contributor

@yocchan-git yocchan-git commented Feb 25, 2024

Issue

概要

変更確認方法

  1. feature/oauth-discord-to-fetch-idをローカルに取り込む
  2. こちらを参考にenvファイルを設定(ファイルは./においてください)
  3. (リダイレクトURLは http://localhost:3000/discord_authentications/newにしてください )
  4. Gemfilegem 'dotenv-rails'を追加して、bin/setupする
  5. Discordアカウントがnilのユーザでログインする
  6. (後から下記の方法でnilにしても大丈夫です)
  7. http://localhost:3000/current_user/edit にアクセスする
  8. 下スクロールでSNSアカウントの「Discord アカウントを登録する」を押す
  9. そのまま認証する
  10. TOPにリダイレクトされたら、もう一度 http://localhost:3000/current_user/edit にアクセスする
  11. 「Discord アカウントは登録されています。」とaccount_nameが表示されているのを確認する
  12. 確認後はenvファイルなどは破棄してください!ありがとうございました🙏

Discordのaccount_namenilにする方法

  1. rails cを実行する
  2. user = User.find_by(login_name: "kimura")など、ログイン名で検索をかける
  3. user.discord_profile.account_name = nilを実行する
  4. user.saveする

Screenshot

変更前

Image from Gyazo

変更後

Image from Gyazo

@yocchan-git yocchan-git self-assigned this Feb 25, 2024
@yocchan-git
Copy link
Contributor Author

@machida さん

下記の画像の2箇所の確認をお願いいたします🙏
主に「Discord アカウントを登録する」ボタンのデザインをしていただけますと嬉しいです

確認方法

  1. feature/oauth-discord-to-fetch-idをローカルに取り込む
  2. foreman start -f Procfile.devでサーバーを立ち上げ
  3. ログインする
  4. http://localhost:3000/current_user/edit にアクセスする

コンソールでDiscord アカウントの登録情報を変更する方法

  1. rails cを実行する
  2. user = User.find_by(login_name: "machida")など、ログイン名で検索をかける
  3. user.discord_profile.account_name = nilなどを実行する
  4. user.saveする

デザインの確認をしていただきたい箇所

  1. Discordアカウントの登録箇所

Image from Gyazo

  1. アカウント登録されている時のフォーム

Image from Gyazo

@machida
Copy link
Member

machida commented Feb 26, 2024

@yocchan-git 了解ですー!実装ありがとうございます!!

@yocchan-git
Copy link
Contributor Author

yocchan-git commented Mar 1, 2024

@machida さん

キャンセル時などの動作について対応しました!
もし、ローカルに取り込んでいましたらプルしていただけますと🙇‍♂️

@machida
Copy link
Member

machida commented Mar 5, 2024

@yocchan-git お待たせしました!デザインを整えましたー

@machida machida removed their assignment Mar 5, 2024
@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from 1e098a6 to 057f900 Compare March 5, 2024 10:50
@yocchan-git yocchan-git marked this pull request as ready for review March 5, 2024 23:32
@yocchan-git yocchan-git requested a review from a user March 5, 2024 23:33
@yocchan-git
Copy link
Contributor Author

@taco-nantai さん

レビュアーにアサインさせていただきました!
お手隙でレビューしていただけますと嬉しいです🙏

@ghost
Copy link

ghost commented Mar 6, 2024

@yocchan-git
お疲れ様です。
レビュー依頼の件かしこまりました。
近日中に対応させていただきます。

Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

正常に動作することを確認しました!
問題なさそうなのでApproveします👍

@yocchan-git
Copy link
Contributor Author

tacoさん、設定めんどくさかったと思いますがありがとうございました!🙇‍♂️

@komagata さん
チームメンバーにapproveいただきました!
お手隙でレビューいただけますと嬉しいです🙏

@yocchan-git yocchan-git requested a review from komagata March 10, 2024 10:41
@komagata
Copy link
Member

@yocchan-git 独自実装ではなく、github認証と同じようにomniauthを使ってみてください~

@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from 0cc8170 to bba378b Compare March 22, 2024 08:41
@yocchan-git
Copy link
Contributor Author

@komagata さん

ご指摘いただいた点修正しました!
お手隙で再度レビューいただけますと嬉しいです

また、こちらの設定もお手数ですがしていただけますと🙏
よろしくお願いいたします

@@ -0,0 +1,16 @@
# frozen_string_literal: true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

既存のgithubのコードをみて、それにあわせるか、必要であればそれも含めて統一的なコードになるように作る必要があります。

自分だけ独自のやり方で書くことを繰り返すとサービス全体としてはどんどんカオスなコードになってしまいます。

具体的に言えばgithub認証はuser_sessions_controller#callbackで処理しています。
それに対してdiscord認証はdiscord_authentications_controller#callbackで処理しています。
別のgoogle認証が入ったとしたらどちらに合わせればいいのかわからなくなりますし、
これは明らかに統一性を欠いています

自分の担当部分だけの最小限を目指すのではなく、サービスのコード全体の複雑性が最小限になるように考えてみてください。

例えばですが、user_sessions_controller#callback内のgithub認証の処理を別クラスに書き出し、user_sessions_controller#callbackからgithub認証用のクラスかdiscord認証用のクラスに飛ばすようにするとか、user_sessions_controllerからcallbackメソッドを削除してgithub用のクラスを作るなどです。

このあたりも対応できるようになれば一つレベルアップするとおもいます。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata さん

丁寧にFBいただきありがとうございます!とても参考になります🙇‍♂️
ご指摘いただいた点修正しましたので、お手隙で再レビューお願いいたします

また気になる点ありましたら、ぜひお願いいたします🙏

@yocchan-git yocchan-git requested a review from komagata March 24, 2024 08:29
@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from 18b7e23 to 687e55e Compare March 28, 2024 12:11
@@ -0,0 +1,26 @@
# frozen_string_literal: true

class DiscordAuthentication
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いい感じだとおもいます。

app/models/authentication/discord.rb: Authentication::Discord みたいなまとめ方もよくあるのでこうした方が今後認証の種類が増えたときに自明になるかもです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata さん

承知しました!
修正しましたので、お手隙で再レビューいただけますと嬉しいです🙏

@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from 687e55e to 855be2a Compare March 30, 2024 03:21
@yocchan-git yocchan-git requested a review from komagata March 30, 2024 03:32
class Authentication::DiscordTest < ActiveSupport::TestCase
include Rails.application.routes.url_helpers

test '引数が正常な値の時' do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テスト名は英語でおねがいします~。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata さん

修正しました!ありがとうございます

@yocchan-git yocchan-git requested a review from komagata March 30, 2024 09:17
app/views/users/form/_sns.html.slim Outdated Show resolved Hide resolved
app/views/users/form/_sns.html.slim Outdated Show resolved Hide resolved

require 'application_system_test_case'

class Authentication::DiscordRegisterTest < ApplicationSystemTestCase
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Authentication::DiscordRegisterTestAuthentication::DiscordTestにしたかったのですが、
それではモデルテストとクラス名が被ってしまうためテストが落ちてしまいます。

ですので、Authentication::DiscordRegisterTestというクラス名になりました。Githubも同様です。🙏

こういった場合は、authenticationフォルダにまとめなくて良いなど、
何かございましたら、ぜひ教えていただけますと嬉しいです🙇‍♂️

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yocchan-git なるほどです。integration_testでもおなじことがありました。そちらでもやったように、テストの種類がわかるようにAuthentication::DiscordSystemTestCaseとかの方がいいかもです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata さん

テストの種類がわかるようにAuthentication::DiscordSystemTestCaseとかの方がいいかもです。

ありがとうございます!修正しました
ご確認よろしくお願いいたします🙇‍♂️

@yocchan-git
Copy link
Contributor Author

@komagata さん

指摘いただいた点修正しました。🙇‍♂️
また、テストコードを追加しました

申し訳ないのですが、再レビューいただけますと嬉しいです🙏
コメントも参考にいただけますと嬉しいです

@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from 1bd20ff to c6b500b Compare April 2, 2024 23:02
@yocchan-git yocchan-git force-pushed the feature/oauth-discord-to-fetch-id branch from c6b500b to e8cbd47 Compare April 2, 2024 23:04
@yocchan-git yocchan-git requested a review from komagata April 2, 2024 23:19

require 'application_system_test_case'

class Authentication::DiscordSystemTestCase < ApplicationSystemTestCase
Copy link
Member

@komagata komagata Apr 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yocchan-git すみません、僕が言っておいてなんですが、たしかクラスの末尾 が‘Test‘ じゃないと実行されないとかあったようなきがします。

その場合 Authentication::DiscordSystemTest とかがいいのではないかとおもいます~

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata さん

そうなのですね!おっしゃってくださりありがとうございます
修正しましたので、ご確認いただけますと嬉しいです🙏

@yocchan-git yocchan-git requested a review from komagata April 3, 2024 07:01
Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させていただきました。OKです~👌

いい感じでリファクタリングできていたとおもいます。
その前の状態でも大丈夫なところでは大丈夫なんですが、 @yocchan-git さんならできると思ったのでコメントさせていただきました。
一歩レベルアップした内容にできていたとおもいます~!

@komagata komagata merged commit f56b7f2 into main Apr 3, 2024
4 checks passed
@komagata komagata deleted the feature/oauth-discord-to-fetch-id branch April 3, 2024 09:02
@github-actions github-actions bot mentioned this pull request Apr 3, 2024
15 tasks
@yocchan-git
Copy link
Contributor Author

komagataさん、何度もありがとうございました!
おかげさまでまた一つ掴んだ気がします🙇‍♂️

またぜひ教えていただけますと嬉しいです🙏

@yocchan-git
Copy link
Contributor Author

yocchan-git commented Apr 3, 2024

@komagata さん

Githubの連携とログインがステージング環境で動作せずでして...😅
Githubの連携とログインはステージング環境でも確認できるのでしょうか?

テストコードは通っているので、確認させていただきました。🙏

ステージング環境での動作です↓
Image from Gyazo

動作確認できない画面

@komagata
Copy link
Member

komagata commented Apr 3, 2024

@yocchan-git ちょっと考えてみてください~。

@yocchan-git
Copy link
Contributor Author

@komagata さん

連絡ありがとうございます!🙏
結論、Github連携・ログインについてステージング環境では動作確認ができないと思ったのですがいかがでしょうか?

理由としては以下の通りです🙇‍♂️

  • ローカルでは正しく動作している
  • テストコードは通っている
  • (失礼で申し訳ないですが)ちょくちょく本番環境でバグが起きてる🤔
  • ステージング環境でのリダイレクト先が本番環境になっている→環境変数を使い回している?

ということから考えました。
本番環境でGithubについては要確認するつもりです。💪

ただ、ステージング環境で動作確認できないとかってあるのか?とも思っています。🤔
お手隙でご回答いただけますと嬉しいです

@komagata
Copy link
Member

komagata commented Apr 7, 2024

@yocchan-git Discord認証は確認できているが、GitHub認証は確認できないという意味でしょうか?
でしたらすみません、Discord関連がステージングで確認できていればOKです。

@yocchan-git
Copy link
Contributor Author

@komagata さん
連絡ありがとうございます!

Discord認証は確認できているが、GitHub認証は確認できないという意味でしょうか?

おっしゃる通りです。説明がわかりづらくて申し訳ございませんでした。

@machida
Copy link
Member

machida commented Apr 12, 2024

@yocchan-git @komagata
こちらって、間違った値が入力されていた場合ってどうなりますでしょうか?

この機能は4/12にリリースされたのですが、それ以前に手入力で間違った値やDiscordの仕様変更前の古いアカウントが登録されている状態で4/12のリリースを迎えた場合はどうなるか気になりました。

@yocchan-git
Copy link
Contributor Author

yocchan-git commented Apr 12, 2024

@machida さん

今の所「連携解除」がないので
ユーザー側で設定し直しもできず、そのままになってしまいます。

確認せずで申し訳ございません!
これは僕の責任なので対応します笑

少しお待ちいただけますと嬉しいです!🙏

@machida
Copy link
Member

machida commented Apr 12, 2024

@yocchan-git すいません、ありがとうございます!Issueを作ったのでポイント追加しますー

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants