warden-googleapps-rails

A simple Rails integration using Google Apps OAuth.

It's built on warden-googleapps, and heavily inspired by warden-github-rails.

Usage

warden-googleapps-rails provides both controller-based and router-based authentication methods for Rails apps.

First of all, you need to configure this gem by creating an initializer like config/initializers/warden_googleapps_rails.rb, and include:

Warden::GoogleApps::Rails.setup do |config|
  # Required
  config.google_apps_domain = "example.org"

  # Optional
  # config.google_apps_endpoint = "http://www.google.com/accounts/o8/id" # this is gmail
  # config.google_apps_redirect_url =  "http://example.org/verify_url" # endpoint where google apps redirects to after successful authentication
end

Controller Helpers

There're several authentication methods for controllers.

# Redirect user to Google Apps OAuth if user not log in
googleapps_authenticate!

# Return whether user has logged in
googleapps_authenticate? 

# Get user object
googleapps_user

# Log out
googleapps_logout

Thus you could write something like:

class PostsController < ApplicationController
  # Ask user log in for all actions
  before_filter :googleapps_authenticate! 

  def new
    @user = googleapps_user
    # …
  end
  # …
end

Router Constraints

In your routes.rb you could simply wrap your resources:

MyApp::Application.routes.draw do
  # …

  namespace :admin do do    
    # Initialize Google Apps authentication flow if user not log in
    googleapps_authenticate do
      resources :posts
    end

    # Require user log in but will not redirect to OAuth flow
    googleapps_authenticated do
      resources :users
    end
  # …
  end

end

Contact

Richard Lee

License

warden-googleapps-rails is available under the MIT license. See the LICENSE.txt file for more info.