0

Deviseの人々によって提供されたに基づいて、Devise+OmniAuthをomniauth-google-apps戦略とアプリに統合しました。次のユーザーフローですべて正常に機能します。

  • 標準のサインインページに移動します
  • [Googleアプリでログイン]をクリックします
  • users / auth / google_apps(標準のOmniAuthフォーム)のフォームにGoogleAppsドメインを入力します
  • Google Appsにサインインします(認証後にomniauth_callbacksへの標準のコールバックを開始します)
  • これで、ユーザーは私のアプリケーションにサインインしました。

ただし、標準の一時的なOmniAuth Google Apps認証フォームを自分のフォーム(ユーザーが自分のGoogle Appsドメインを送信するためのフォーム)で「上書き」したいと思います。

どうすればよいですか?

4

1 に答える 1

1

OK、しばらくこれに取り組んだ後、私は良い解決策にぶつかったと思います。標準の一時的なOmniAuthGoogleApps認証フォーム自体を「オーバーライド」しませんでしたが、これが私が行ったことです。

google_apps既存のものにアクションを追加しましたSessionsController

# sessions_controller.rb
def google_apps
  @title = 'Sign In with Google Apps'

  respond_to do |format|
    format.html
  end
end

ユーザーにGoogleAppsドメインを要求するカスタムビューを追加しました(フォームは単にドメインをOmniAuthフォームと同じ場所にPOSTすることに注意してください)

-# google_apps.html.haml
= form_tag user_omniauth_authorize_path(:google_apps) do
  %p
    = url_field_tag 'domain', nil, placeholder: 'example.com'
  = link_to_submit_form 'Sign In'

ちなみに、もっと良い解決策があれば、答えを投稿してください。

于 2012-12-12T19:33:49.097 に答える