Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Omniauth strategy for Active Passport
JavaScript Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
coverage
lib
spec
Gemfile
Gemfile.lock
README.md
Rakefile
omniauth-active_passport.gemspec

README.md

OmniAuth Active Passport

This is the official OmniAuth strategy for authenticating to Active Passport. To use it, you'll need to sign up for an OAuth2 Application ID and Secret on the Active Passport Applications Page.

Usage with Devise

Add the following code to devise.rb:

config.omniauth :active_passport, 'ACTIVE_PASSPORT_KEY', 'ACTIVE_PASSPORT_SECRET', :strategy_class => OmniAuth::Strategies::ActivePassport

Create a controller under users/omniauth_callbacks_controller.rb and add the following:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def passthru
    render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
  end

  def active_passport
    # successful logic authentication goes here
    # token will be in request.env['omniauth.auth']
  end
end

Modify routes.rb to include the following:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

devise_scope :user do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

Make sure your model (e.g. user.rb) is omniauthable: devise :omniauthable

Devise will create the following url method for linking to the provider:

user_omniauth_authorize_path(:active_passport)

Testing

You will need to turn on "test mode" for OmniAuth:

OmniAuth.config.test_mode = true

Once test mode has been enabled, mock_auth will allow you to set provider authentication hash to return during testing:

OmniAuth.config.mock_auth[:active_passport] = {
    :provider => 'active_passport',
    :uid => '1234567890',
    :info => {
     :email => 'test@example.com'
    }
  })

The following two env variables are needed to prevent routing errors during OmniAuth controller tests:

before do 
  request.env["devise.mapping"] = Devise.mappings[:user] 
  request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:active_passport] 
end
Something went wrong with that request. Please try again.