The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Authen::Simple::Adapter - Adapter class for implementations

SYNOPSIS

package Authenticate::Simple::Larry;

use strict;
use base 'Authen::Simple::Adapter';

__PACKAGE__->options({
    secret => {
        type     => Params::Validate::SCALAR,
        default  => 'wall',
        optional => 1
    }
});

sub check {
    my ( $self, $username, $password ) = @_;
    
    if ( $username eq 'larry' && $password eq $self->secret ) {
        
        $self->log->debug( qq/Successfully authenticated user '$username'./ )
          if $self->log;
        
        return 1;
    }
    
    $self->log->debug( qq/Failed to authenticate user '$username'. Reason: 'Invalid credentials'/ )
      if $self->log;
    
    return 0;
}

1;

DESCRIPTION

Adapter class for implementations.

METHODS

  • new ( %parameters )

    If overloaded, this method should take a hash of parameters. The following options should be valid:

    • cache ( $ )

      Any object that supports get, set. Only successful authentications are cached.

      cache => Cache::FastMmap->new
    • callback ( \& )

      A subref that gets called with two scalar references, username and password.

      callback = sub {
          my ( $username, $password ) = @_;
          
          if ( length($$password) < 6 ) {
              return 0; # abort, invalid credintials
          }
          
          if ( $$password eq 'secret' ) {
              return 1; # abort, successful authentication
          }
          
          return; # proceed;
      }
    • log ( $ )

      Any object that supports debug, info, error and warn.

      log => Log::Log4perl->get_logger('Authen::Simple')
      log => $r->log
      log => $r->server->log
  • init ( \%parameters )

    This method is called after construction. It should assign parameters and return the instance.

    sub init {
        my ( $self, $parameters ) = @_;
        
        # mock with parameters
        
        return $self->SUPER::init($parameters);
    }
  • authenticate ( $username, $password )

    End user method. Applies callback, checks cache and calls check unless aborted by callback or a cache hit.

  • check ( $username, $password )

    Must be implemented in sublcass, should return true on success and false on failure.

  • check_password( $password, $encrypted )

  • options ( \%options )

    Must be set in subclass, should be a valid Params::Validate specification. Accessors for options will be created unless defined in sublcass.

    __PACKAGE__->options({
        host => {
            type     => Params::Validate::SCALAR,
            optional => 0
        },
        port => {
            type     => Params::Validate::SCALAR,
            default  => 80,
            optional => 1
        }
    });

SEE ALSO

Authen::Simple

Authen::Simple::Password

Params::Validate

AUTHOR

Christian Hansen chansen@cpan.org

COPYRIGHT

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