NAME
   Dancer::Plugin::Auth::Basic - Basic HTTP authentication for Dancer web
   apps

VERSION
   Version 0.02

SYNOPSIS
   Dancer::Plugin::Auth::Basic provides basic HTTP authentication for
   Dancer web applications.

   Add the plugin to your application:

       use Dancer::Plugin::Auth::Basic;

   Configure the protected paths and users/passwords in the YAML
   configuration file:

       plugins:
         "Auth::Basic":
           paths:
             "/restricted":
               realm: Restricted zone
               user: alice
               password: AlicesPassword
             "/secret/data":
               users:
                 alice: AlicesPassword
                 bob: BobsPassword

   You can also call the `auth_basic' function in a before filter:

       before sub {
           auth_basic user => 'alice', password => 'AlicesPassword';
       };

   or in a route handler:

       get '/confidential' => sub {
           auth_basic realm => 'Authorized personnel only',
               users => { 'alice' => 'AlicesPassword', 'bob' => 'BobsPassword' };

           # Authenticated
           ...
       };

DESCRIPTION
   Dancer::Plugin::Auth::Basic adds basic HTTP authentication to Dancer web
   applications.

CONFIGURATION
   The available configuration options are listed below.

 paths
   Defines one or more paths that will be protected, including sub-paths
   (so if the path is `"/restricted"', then
   `"/restricted/secret/file.html"' will also be protected). Each path can
   have the following parameters:

   * `password'
       Password (if a single user is allowed access).

   * `realm'
       Realm name that will be displayed in the authentication dialog.
       Default: `"Restricted area"'

   * `user'
       User name (if a single user is allowed access).

   * `users'
       A list of user names and passwords (if multiple users are allowed
       access).

   Example:

       plugins:
         "Auth::Basic":
           paths:
             "/secret":
               realm: "Top secret documents"
               user: charlie
               password: CharliesPassword
             "/documents":
               realm: "Only for Bob and Tim"
               users:
                 bob: BobsPassword
                 tim: TimsPassword

 users
   Defines top-level users and their passwords. These users can access all
   paths configured using the `paths' option.

   Example:

       plugins:
         "Auth::Basic":
           users:
             fred: FredsPassword
             jim: JimsPassword

PASSWORDS
   Passwords in configuration files can be written as clear text, or in any
   scheme that is recognized by Authen::Passphrase (either in RFC 2307 or
   crypt encoding).

   Example:

        plugins:
         "Auth::Basic":
           users:
             # Clear text
             tom: TomsPassword
             # MD5 hash, RFC 2307 encoding
             ben: "{MD5}X8/UHlR6EiFbFz/0f903OQ=="
             # Blowfish, crypt encoding
             ryan: "$2a$08$4DqiF8T1kUfj.nhxTj2VhuUt1ZX8L.y4aNA3PCAjWLfLEZCw8r0ei"

FUNCTIONS
 auth_basic
   This function may be called in a before filter or at the beginning of a
   route handler. It checks if the client is authorized to access the
   requested path -- if not, it immediately returns a 401 Unauthorized
   response to prompt the user to authenticate.

       auth_basic realm => 'Top secret', user => 'alice',
           password => 'AlicesPassword';

   Parameters:

   * `realm'
       Realm name that will be displayed in the authentication dialog.
       Default: `"Restricted area"'

   * `password'
       Password (if a single user is allowed access).

   * `user'
       User name (if a single user is allowed access).

   * `users'
       A hash reference mapping user names to passwords (if multiple users
       are allowed access).

AUTHOR
   Michal Wojciechowski, `<odyniec at cpan.org>'

BUGS
   Please report any bugs or feature requests to
   `bug-dancer-plugin-auth-basic at rt.cpan.org', or through the web
   interface at
   http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dancer-Plugin-Auth-Basic.
   I will be notified, and then you'll automatically be notified of
   progress on your bug as I make changes.

SUPPORT
   You can find documentation for this module with the perldoc command.

       perldoc Dancer::Plugin::Auth::Basic

   You can also look for information at:

   * RT: CPAN's request tracker
       http://rt.cpan.org/NoAuth/Bugs.html?Dist=Dancer-Plugin-Auth-Basic

   * AnnoCPAN: Annotated CPAN documentation
       http://annocpan.org/dist/Dancer-Plugin-Auth-Basic

   * CPAN Ratings
       http://cpanratings.perl.org/d/Dancer-Plugin-Auth-Basic

   * Search CPAN
       http://search.cpan.org/dist/Dancer-Plugin-Auth-Basic/

ACKNOWLEDGEMENTS
   Inspired by Tatsuhiko Miyagawa's Plack::Middleware::Auth::Basic.

LICENSE AND COPYRIGHT
   Copyright 2011-2012 Michal Wojciechowski.

   This program is free software; you can redistribute it and/or modify it
   under the terms of either: the GNU General Public License as published
   by the Free Software Foundation; or the Artistic License.

   See http://dev.perl.org/licenses/ for more information.