Sha256: 2225124479d8b5b11e86f654677e7cf85ad663249968d62cffb9128890711c99

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

require 'sinatra/base'

module Sinatra
  module SessionAuth

    module Helpers
      def authorized?
        session[:authorized]
      end

      def user
        session[:user]
      end

      def authorize!
        redirect '/login' unless authorized?
      end

      def logout!
        session[:authorized] = false
      end
    end

    def self.registered(app)
      app.helpers SessionAuth::Helpers

      app.set :users, {}

      app.get '/login' do
        "<h1>Please enter your login information</h1>" +
        "<form method='POST' action='/login'>" +
        "<label>Username</label>" +
        "<input type='text' name='user'>" +
        "<label>Password</label>" +
        "<input type='password' name='pass'>" +
        "<input type='submit' name='Submit'>" +
        "</form>"
      end

      app.post '/login' do
        if options.users.include? params[:user] and options.users[params[:user]] == params[:pass]
          session[:authorized] = true
          session[:user] = params[:user]
          session[:context] = nil
          redirect '/'
        else
          session[:authorized] = false
          session[:user] = nil
          session[:context] = nil
          redirect '/login'
        end
      end

      app.get '/logout' do
        session[:authorized] = false
        session[:user] = nil
        session[:context] = nil
        redirect '/'
      end



    end
  end

  register SessionAuth
end


Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rbbt-views-0.1.2 lib/rbbt/workflow/rest/auth.rb
rbbt-views-0.1.1 lib/rbbt/workflow/rest/auth.rb
rbbt-views-0.1.0 lib/rbbt/workflow/rest/auth.rb