soveran / basica

Basic authentication library.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Basic authentication library.

License:MIT License


Languages

Language:Ruby 100.0%