Socialite Build Status

This is an opinionated Rails 3.1 mountable engine provides your application with support for managing multiple OAuth providers per User.

Why make this?

Every site I have built in the past couple years has required implementing authentication support for Users. Now this was simple enough when it was only one provider (in my case, "Login with Facebook"), but more often then not it evolved into "Login with <insert_oauth_provider>".

Now OmniAuth has some good write-ups on handling multiple providers, but it lacked any support for restricting a user to one identity per provider. Socialite aims to solve this and while enforcing every user to have a Basic Authentication identity as a fall-back in case of password recovery.

What makes this unique?

  1. Every User can only have one identity per supported provider
    • Example: User can have only 1 linked Facebook Identity at any given time
  2. Every User must have an basic-auth identity
    • Example: User signs up through Facebook, but unlinks it. Enforcing a local basic auth mechanism aids account recovery.
  3. Supports any provider strategy in the OmniAuth project.

Resources

Installation

To use Socialite in a Rails 3.1 application:

  • Require it in the Gemfile: gem 'socialite', git: 'git://github.com/jsmestad/socialite
  • Install the gem it by running bundle install.
  • Run the socialite generator using rails g socialite:install for typical installs and rails g active_record:socialite for specifying custom options.

History

This project began as a fork of Tim Riley's great Omnisocial plugin. The motivation for this fork is that I required multiple authorizations for each account (linking support) and wanted a proper mountable Rails 3.1 Engine.

Copyright & License

Socialite is Copyright (c) 2011- 2013 Justin Smestad. All Rights are Reserved. Code is distributed under the Apache 2.0 License. See LICENSE file for more information.

The original OmniSocial code is Copyright (c) 2010-2011 Tim Riley and Icelab, and is released under MIT License.