A Rails Engine that allow the site to act as an OAuth provider
Ruby JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
config
lib
test
.gitignore
Gemfile
Gemfile.lock
MIT-LICENSE
README.rdoc
Rakefile
oauth_provider_engine.gemspec

README.rdoc

OauthProviderEngine

A Rails Engine that allow the site to act as an OAuth provider

Installation

In your Gemfile add:

gem 'oauth_provider_engine'

Install your gems:

bundle install

That's it!

Configuration

OauthProviderEngine makes no assumptions about how you manage your user authentication. You can configure OauthProviderEngine by setting Proc's that are evaluated at runtime.

For example, in an initializer:

OauthProviderEngine.configure do |config|
  # runs as a before_filter to the /oauth/authenticate endpoint to
  #   ensure the user is logged in before authorizing an app
  config.authenticate_method = Proc.new{|controller|
    controller.redirect_to login_path unless controller.logged_in?
  }

  # runs as a before_filter to the /oauth/applications resource to
  #  ensure the user can manage the oauth applications
  config.admin_authenticate_method = Proc.new{|controller|
    render :text => '', :status => 401 unless controller.current_user && 
      controller.current_user.allowed?("manage_oauth")
  }

  # returns the current user's id so we know who is allowing access
  config.user_method = Proc.new{|controller|
    controller.current_user.id
  end
end

Data Model

OauthProviderEngine uses ActiveRecord to manage 3 tables:

  • applications (OauthProviderEngine::Application)

  • request_tokens (OauthProviderEngine::RequestToken)

  • access_tokens (OauthProviderEngine::AccessToken)

A rails generator is provided for your convenience:

bundle exec rails generate oauth_provider_engine

You may also generate your migration by hand, if you'd like to take advantage of database specific features (like foreign keys for InnoDB MySQL tables).

Contributing

If you'd like to contribute to this project, please fork and send me a pull request.