Search code examples
ruby-on-railsrackomniauth

override "/auth/identity"-page of omniauth identity


I'm using omniauth without devise for authentication, as I like it's simplicity. In addition to omniauth-facebook I use omniauth-identity to offer email/pw-authentication.
The railscast on omniauth-identity describes how to setup a customized registration and login page. But the default routes supplied by identity (/auth/identity and /auth/identity/register) are still accessible.

I would like to have these under my control, as I want only want to let invited users register. Is there any way to override those routes supplied by a rack middleware?
Trying to just

match "/auth/identity", to: "somewhere#else"

doesn't do the trick!

Is there maybe a configuration to turn these default routes off? The documentation isn't giving any details on this...

Unfortunately I'm fairly new to Rack, so I don't have enough insight yet, to solve this issue on my own!
I'd be glad, if someone could point me in the right direction!


Solution

  • An OmniAuth strategy object has a method request_phase which generates a html form and shows it to user. For "omniauth-identity" strategy this would be the form you see at /auth/identity url.

    You can override the request_phase method and replace the form generator with, for example, a redirect to your custom login page (assuming you have it available at /login url). Place the following along with your omniauth initialization code:

    module OmniAuth
      module Strategies
       class Identity
         def request_phase
           redirect '/login'
         end
       end
     end
    end
    
    # Your OmniAuth::Builder configuration goes here...