Skip to content

How to: Add authentication

pushmatrix edited this page Nov 14, 2012 · 14 revisions

Each time you visit a dashboard, a method called protected! gets called. For all new Dashing projects, this method does nothing. You can override this behaviour in the config.ru file.

helpers do
  def protected!
  # Put any authentication code you want in here.
  # This method is run before accessing any resource.
  end
end

Authenticating with Google Apps

Make sure to add the following to your Gemfile.

gem 'omniauth-google-apps'

Here is a sample config.ru file that enables Google Apps auth.

require 'openid/store/filesystem'
require 'omniauth/strategies/google_apps'
require 'dashing'

configure do
  set :auth_token, 'YOUR_AUTH_TOKEN'

  helpers do

    def protected!
      redirect '/auth/g' unless session[:user_id]
    end

  end

  use Rack::Session::Cookie
  use OmniAuth::Builder do
    provider :google_apps, :store => OpenID::Store::Filesystem.new('./tmp'), :name => 'g', :domain => 'YOURDOMAIN.com'
  end

  post '/auth/g/callback' do
    if auth = request.env['omniauth.auth'] 
      session[:user_id] = auth['info']['email']
      redirect '/'
    else
      redirect '/auth/failure'
    end
  end

  get '/auth/failure' do
    'Nope.'
  end
end

map Sinatra::Application.assets_prefix do run Sinatra::Application.sprockets end

run Sinatra::Application

Clone this wiki locally