-
Notifications
You must be signed in to change notification settings - Fork 71
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
Discord認証ができるようにする #7436
Conversation
@machida さん 下記の画像の2箇所の確認をお願いいたします🙏 確認方法
コンソールでDiscord アカウントの登録情報を変更する方法
デザインの確認をしていただきたい箇所
|
@yocchan-git 了解ですー!実装ありがとうございます!! |
@machida さん キャンセル時などの動作について対応しました! |
@yocchan-git お待たせしました!デザインを整えましたー |
1e098a6
to
057f900
Compare
@taco-nantai さん レビュアーにアサインさせていただきました! |
@yocchan-git |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
正常に動作することを確認しました!
問題なさそうなのでApproveします👍
tacoさん、設定めんどくさかったと思いますがありがとうございました!🙇♂️ @komagata さん |
@yocchan-git 独自実装ではなく、github認証と同じようにomniauthを使ってみてください~ |
0cc8170
to
bba378b
Compare
@@ -0,0 +1,16 @@ | |||
# frozen_string_literal: true |
There was a problem hiding this comment.
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用のクラスを作るなどです。
このあたりも対応できるようになれば一つレベルアップするとおもいます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata さん
丁寧にFBいただきありがとうございます!とても参考になります🙇♂️
ご指摘いただいた点修正しましたので、お手隙で再レビューお願いいたします
また気になる点ありましたら、ぜひお願いいたします🙏
18b7e23
to
687e55e
Compare
app/models/discord_authentication.rb
Outdated
@@ -0,0 +1,26 @@ | |||
# frozen_string_literal: true | |||
|
|||
class DiscordAuthentication |
There was a problem hiding this comment.
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
みたいなまとめ方もよくあるのでこうした方が今後認証の種類が増えたときに自明になるかもです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata さん
承知しました!
修正しましたので、お手隙で再レビューいただけますと嬉しいです🙏
687e55e
to
855be2a
Compare
class Authentication::DiscordTest < ActiveSupport::TestCase | ||
include Rails.application.routes.url_helpers | ||
|
||
test '引数が正常な値の時' do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
テスト名は英語でおねがいします~。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata さん
修正しました!ありがとうございます
|
||
require 'application_system_test_case' | ||
|
||
class Authentication::DiscordRegisterTest < ApplicationSystemTestCase |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Authentication::DiscordRegisterTest
はAuthentication::DiscordTest
にしたかったのですが、
それではモデルテストとクラス名が被ってしまうためテストが落ちてしまいます。
ですので、Authentication::DiscordRegisterTest
というクラス名になりました。Github
も同様です。🙏
こういった場合は、authentication
フォルダにまとめなくて良いなど、
何かございましたら、ぜひ教えていただけますと嬉しいです🙇♂️
There was a problem hiding this comment.
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
とかの方がいいかもです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata さん
テストの種類がわかるようにAuthentication::DiscordSystemTestCaseとかの方がいいかもです。
ありがとうございます!修正しました
ご確認よろしくお願いいたします🙇♂️
1bd20ff
to
c6b500b
Compare
c6b500b
to
e8cbd47
Compare
|
||
require 'application_system_test_case' | ||
|
||
class Authentication::DiscordSystemTestCase < ApplicationSystemTestCase |
There was a problem hiding this comment.
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
とかがいいのではないかとおもいます~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@komagata さん
そうなのですね!おっしゃってくださりありがとうございます
修正しましたので、ご確認いただけますと嬉しいです🙏
There was a problem hiding this 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さん、何度もありがとうございました! またぜひ教えていただけますと嬉しいです🙏 |
@yocchan-git ちょっと考えてみてください~。 |
@komagata さん 連絡ありがとうございます!🙏 理由としては以下の通りです🙇♂️
ということから考えました。 ただ、ステージング環境で動作確認できないとかってあるのか?とも思っています。🤔 |
@yocchan-git Discord認証は確認できているが、GitHub認証は確認できないという意味でしょうか? |
@komagata さん
おっしゃる通りです。説明がわかりづらくて申し訳ございませんでした。 |
@yocchan-git @komagata この機能は4/12にリリースされたのですが、それ以前に手入力で間違った値やDiscordの仕様変更前の古いアカウントが登録されている状態で4/12のリリースを迎えた場合はどうなるか気になりました。 |
@machida さん 今の所「連携解除」がないので 確認せずで申し訳ございません! 少しお待ちいただけますと嬉しいです!🙏 |
@yocchan-git すいません、ありがとうございます!Issueを作ったのでポイント追加しますー |
Issue
概要
変更確認方法
feature/oauth-discord-to-fetch-id
をローカルに取り込む./
においてください)http://localhost:3000/discord_authentications/new
にしてください )Gemfile
にgem 'dotenv-rails'
を追加して、bin/setup
するnil
のユーザでログインするnil
にしても大丈夫です)account_name
が表示されているのを確認するDiscordの
account_name
をnil
にする方法rails c
を実行するuser = User.find_by(login_name: "kimura")
など、ログイン名で検索をかけるuser.discord_profile.account_name = nil
を実行するuser.save
するScreenshot
変更前
変更後