Project

basica

0.0
No commit activity in last 3 years
No release in over 3 years
Basic authentication library for Rack applications.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

basica

Basic authentication library.

Description

Include the Basica module in your application, then call it by passing the env hash (should be available in every Rack based application) and a block. If the env hash contains the HTTP_AUTHORIZATION header, then the username and password will be passed to the block.

The result of the method call to basic_auth will be that of the block. If the HTTP_AUTHORIZATION header is not found, a RuntimeError is raised.

Example

First, an example of Basica in the wild:

require "basica"

include Basica

header = "Basic %s" % Base64.encode64("foo:bar")

env = { "HTTP_AUTHORIZATION" => header }

result = basic_auth(env) do |user, pass|
  user == "foo" && pass == "bar"
end

if result
  # The right credentials were provided.
end

Now an example of how to use it with Cuba and Shield:

Cuba.plugin Basica

Cuba.define do
  basic_auth(env) do |user, pass|
    login(User, user, pass)
  end

  on authenticated(User) do
    run Users
  end

  on default do
    res.status = 401
    res.headers["WWW-Authenticate"] = 'Basic realm="MyApp"'
    res.write "Unauthorized"
  end
end

Note that the previous example assumes you have already required Cuba, Shield, Basica, and that you have a User model defined.

Installation

Install it using rubygems.

$ gem install basica