Basic authentication library.
Basic authentication library suited for Cuba apps.
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.
First, an example of Basica in the wild:
require "basica" include Basica header = "Basic %s" % Base64.encode64("foo:bar") result = basic_auth("HTTP_AUTHORIZATION" => header) do |user, pass| user == "foo" && pass == "bar" end if result # The right credentials were provided. end
Cuba.plugin Basica Cuba.define do on env["HTTP_AUTHORIZATION"].nil? do res.status = 401 res.headers["WWW-Authenticate"] = 'Basic realm="MyApp"' res.write "Unauthorized" end basic_auth(env) do |user, pass| login(User, user, pass) end on authenticated(User) do run Users end end
Note that the previous example assumes you have already required Cuba, Shield, Basica, and that you have a User model defined.
Install it using rubygems.
$ gem install basica