Fork me on GitHub

open_id_authentication plugin and remember me

Do you run a Rails website that allows traditional username/email/password login and OpenID authentication? Do you know for sure that your “remember me” feature is working? Please do check…I’ll wait…

Good, now that you realize your “remember me” feature is not working for the OpenID login on your site, I’ll show you an easy way to hack it into the latest version of the open_id_authentication plugin. My preferred method to hack plugins is the evil twin technique.

The basic problem here is that your login form’s parameter list is not being passed back to your application after authenticity is checked at the OpenID provider. You have a remember_me checkbox, and, dammit, you want that parameter passed through. (Program note: some say this is not proper technique. I’m just trying to get you a solution, however temporary that may be.)

We need to hack the opend_id_redirect_url method:

def open_id_redirect_url(open_id_request, return_to = nil)
  open_id_request.return_to_args[‘open_id_complete’] = ‘1′
  open_id_request.redirect_url(root_url, return_to || requested_url)
end

Using the evil twin technique, create an “open_id_authentication_hacks” folder in your vendor/plugins directory. Within this directory, create an “init.rb” file and add the following:

OpenIdAuthentication.module_eval do

private

  def open_id_redirect_url_with_remember_me(open_id_request, return_to = nil)
    open_id_request.return_to_args[‘remember_me’] = params[‘remember_me’]
    open_id_redirect_url_without_remember_me(open_id_request, return_to)
  end
  alias_method_chain :open_id_redirect_url, :remember_me

end

Now you have a nicely aliased method that includes the remember_me parameter upon returning to your app.

Share if you like:
  • Digg
  • StumbleUpon
  • del.icio.us
  • Technorati
  • Ma.gnolia
  • Reddit
  • description
Related posts:

Comment (1)

  1. Very cool. Thanks for fixing that!

    Tuesday, July 15, 2008 at 4:09 pm #

Trackback/Pingback (1)

  1. open_id_authentiction really running « MAwiniarski on Wednesday, March 4, 2009 at 8:05 am

    [...] There is one more thing #TODO: I will update, when it will be ready, but You can already get it on Barry Hess’s blog: open_id_authentication plugin and remember me. [...]