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