NAME
    Mojolicious::Plugin::HttpBasicAuth - Http-Basic-Authentication
    implementation for Mojolicious

SYNOPSIS
      # in your startup
      $self->plugin(
          'http_basic_auth', {
              validate => sub {
                  my $c         = shift;
                  my $loginname = shift;
                  my $password  = shift;
                  my $realm      = shift;
                  return 1 if($realm eq 'Springfield' && $loginname eq 'Homer' && $password eq 'Marge');
                  return 0;
              },
              realm => 'Homers Home'
          }
      );

      # in your routes
      sub index {
          my $self = shift;
          return unless $self->basic_auth(\%options);
          $self->render();
      }
  
      # or bridged
      my $foo = $r->bridge('/bridge')->to(cb => sub {
          my $self = shift;
          # Authenticated
          return unless $self->basic_auth({realm => 'Castle Bridge', validate => sub {return 1;}});
      });
      $foo->route('/bar')->to(controller => 'foo', action => 'bar');

DESCRIPTION
    Mojolicious::Plugin::HttpBasicAuth is a implementation of the
    Http-Basic-Authentication

OPTIONS
    Mojolicious::Plugin::HttpBasicAuth supports the following options.

  realm
      $self->plugin('http_basic_auth', {realm => 'My Castle!'});

    HTTP-Realm, defaults to 'WWW'

  validate
      $self->plugin('http_basic_auth', {
          validate => sub {
                my $c          = shift;
                my $loginname  = shift;
                my $password   = shift;
                my $realm      = shift;
                return 1 if($realm eq 'Springfield' && $loginname eq 'Homer' && $password eq 'Marge');
                return 0;
          }
      });

    Validation callback to verify user. This option is mandatory.

  invalid
      $self->plugin('http_basic_auth', {
          invalid => sub {
              my $controller = shift;
              return (
                  json => { json     => { error => 'HTTP 401: Unauthorized' } },
                  html => { template => 'auth/basic' },
                  any  => { data     => 'HTTP 401: Unauthorized' }
              );
          }
      });

    Callback for invalid requests, default can be seen here. Return values
    are dispatched to "respond_to" in Mojolicious::Controller

HELPERS
    Mojolicious::Plugin::HttpBasicAuth implements the following helpers.

  basic_auth
      return unless $self->basic_auth({realm => 'Kitchen'});

    All default options can be overwritten in every call.

METHODS
    Mojolicious::Plugin::HttpBasicAuth inherits all methods from
    Mojolicious::Plugin and implements the following new ones.

  register
      my $route = $plugin->register(Mojolicious->new);
      my $route = $plugin->register(Mojolicious->new, {realm => 'Fort Knox', validate => sub {
          return 0;
      }});

    Register renderer and helper in Mojolicious application.

SEE ALSO
    Mojolicious, Mojolicious::Guides, <http://mojolicio.us>.

AUTHORS
    Patrick Grämer, <pgraemer@cpan.org>, <http://graemer.org>.
    Markus Michel, <mmichel@cpan.org>, <http://markusmichel.org>.