Low commit activity in last 3 years
No release in over a year
This gem contains Central ID strategy for OmniAuth
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 1.5, >= 1.5.0
 Project Readme

OmniAuth Central ID

Tests

This gem offers OmniAuth strategy for Central ID service.

Usage

First start by adding this gem to your Gemfile:

gem "omniauth-centralid"

Next, let OmniAuth know about provider. In a Rails app, create an initializer for instance config/initializers/omniauth.rb with:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :centralid, "CENTRALID_KEY", "CENTRALID_SECRET"
end

You can override config, like

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :centralid, "CENTRALID_KEY", "CENTRALID_SECRET",
  client_options: {
    site: "http://localhost:3000"
  }
end

In your routes file:

get "auth/:provider/callback", to: "oauths#create"
get "auth/failure",            to: "oauths#failure" # optional (to override default redirect behaviour)

Add a controller (oauths_controller.rb as defined in your routes)

  # sends the user on a trip to the provider,
  # and after authorizing there back to the callback url.
  def create
    auth = request.env["omniauth.auth"]
    user = User.find_by(provider: auth["provider"], uid: auth["uid"]).try(:user) || User.create_with_omniauth(auth)
    # Sign in the user
    session[:user_id] = user.id
    redirect_to dashboard_path
  end

  # By default, it is supposed to raise an exception in development mode
  # and redirect otherwise. Override if needed.
  def failure
    redirect_to login_path
  end

And finally add a create_with_omniauth method in your user model.

  private

  def self.create_with_omniauth(auth)
    user = create! do |user|
      user.full_name   = auth["info"]["name"]
      user.email       = auth["info"]["email"]
      user.password    = SecureRandom.hex
      user.authentications.new(
        provider: auth["provider"],
        uid:      auth["uid"]
      )
    end
    user
  end

Contributing

Run tests with rake test