Sha256: a21bd791cba309f2a38ee2ca1fe134c07880dc911268fb5ff610fdca09da3f9b

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

require 'sinatra'

module SimpleAdminAuth
  class Application < Sinatra::Base
    enable :inline_templates
    set :raise_errors, true
    set :show_exceptions, false

    def self.get_or_post(path, opts={}, &block)
      get(path, opts, &block)
      post(path, opts, &block)
    end

    get_or_post '/auth/admin/callback' do
      auth_hash = request.env['omniauth.auth']

      session[:admin_user] = auth_hash['info']

      return_url = session[:admin_login_return_url] || '/'
      session[:admin_login_return_url] = nil
      if admin?
        redirect return_url
      else
        throw(:halt, [401, "Not authorized\n"])
      end
    end

    get '/auth/admin/logout' do
      return_to = params[:return_to] || '/'
      session[:admin_user] = nil
      redirect return_to
    end

    get '/auth/admin/login' do
      erb :login
    end

    get '/auth/admin/bootstrap.css' do
      send_file File.join(File.dirname(__FILE__), '../../static/css/bootstrap.min.css')
    end

    private


    def admin?
      !session[:admin_user].nil?
    end
  end
end

__END__

@@ login
<html>
<head><title>Admin Login</title>
  <link rel="stylesheet" href="/auth/admin/bootstrap.css" />
  <style type="text/css">
    body {
      background-color: #F9F9F9;
    }

    #content {
      text-align: center;
      margin: 200px auto;
    }
  </style>
</head>
<body>
<div id="content">
  <p>You need to sign in to continue.</p>
  <a class="btn btn-large" href="/auth/admin">Sign in via Google Apps</a>
</div>

</body>
</html>

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
simple_admin_auth-0.0.3 lib/simple_admin_auth/application.rb
simple_admin_auth-0.0.2 lib/simple_admin_auth/application.rb