The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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 'Evergreen Terrace' && $loginname eq 'Homer' && $password eq 'Marge');
              return 0;
          },
          realm => 'Evergreen Terrace'
      }
  );

  # 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.

AUTHOR

Patrick Grämer <pgraemer@cpan.org> , http://graemer.org.

CONTRIBUTOR

Markus Michel <mmichel@cpan.org> , http://markusmichel.org.

COPYRIGHT

Copyright 2015 Patrick Grämer

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.