No commit activity in last 3 years
No release in over 3 years
A Rails Engine that allow the site to act as an OAuth provider
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 0.4.0
>= 3.0.0
 Project Readme

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.