warden_omniauth-jonrowe

hassox の warden_omniauth (0.1.0: https://github.com/hassox/warden_omniauth/)より jonrowe の(https://rubygems.org/gems/warden_omniauth-jonrowe)の方がいいっぽい。

hassox のだと gem に上がってる奴だと env['omniauth.auth'] を見ないのでコールバーっくループが起こるけど jonroweのは見る。 またredirect_after_callback にブロックが渡せるので

    use WardenOmniAuth do |config|
      config.redirect_after_callback {|env|
        logger.debug(env['rack.session']['redirect_after_callback'])
        env['rack.session']['redirect_after_callback']
      }
    end

みたいなことが出来る。

    helpers do
      def warden
        env['warden']
      end
      def authenticate!(redirect_after_callback="/")
        session['redirect_after_callback'] = redirect_after_callback
        warden.authenticate!
        session['redirect_after_callback'] = "/"
      end
    end
    ...
    get :protected do
      authenticate!(url_for(:protected))
      ...

ってな感じで動的に戻してもらいたいところを指定。

以前の hassox を uninstall してから % sudo gem install warden_omniauth-jonrowe