package Authen::Simple; use strict; use warnings; use Params::Validate qw[]; our $VERSION = '0.5'; sub new { my $class = shift; my %adapter = ( isa => 'Authen::Simple::Adapter', type => Params::Validate::OBJECT, optional => 1 ); my @spec = ( { %adapter, optional => 0 }, ( \%adapter ) x @_ ); my $adapters = Params::Validate::validate_pos( @_, @spec ); return bless( $adapters, $class ); } sub authenticate { my ( $self, $username, $password ) = @_; foreach ( $username, $password ) { return 0 unless defined($_) && !ref($_) && length($_); } foreach my $adapter ( @{$self} ) { return 1 if $adapter->authenticate( $username, $password ); } return 0; } 1; __END__ =head1 NAME Authen::Simple - Simple Authentication =head1 SYNOPSIS use Authen::Simple; use Authen::Simple::Kerberos; use Authen::Simple::SMB; my $simple = Authen::Simple->new( Authen::Simple::Kerberos->new( realm => 'REALM.COMPANY.COM' ), Authen::Simple::SMB->new( domain => 'DOMAIN', pdc => 'PDC' ) ); if ( $simple->authenticate( $username, $password ) ) { # successfull authentication } =head1 DESCRIPTION Simple and consistent framework for authentication. =head1 METHODS =over 4 =item * new This method takes an array of C adapters. Required. =item * authenticate( $username, $password ) Returns true on success and false on failure. =back =head1 SEE ALSO L. L. L. L. L. L. L. L. L. L. L. L. L. L. L. =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut