#!/usr/bin/perl
-package Catalyst::Plugin::Authentication::Store::Minimal::Backend;
+package Catalyst::Plugin::Authentication::Store::Htpasswd::Backend;
+use base qw/Class::Accessor::Fast/;
use strict;
use warnings;
-use Catalyst::Plugin::Authentication::User::Hash;
-use Scalar::Util ();
+use Authen::Htpasswd;
+use Catalyst::Plugin::Authentication::Store::Htpasswd::User;
+
+BEGIN { __PACKAGE__->mk_accessors(qw/file/) }
sub new {
- my ( $class, $hash ) = @_;
+ my ( $class, $file, %extra ) = @_;
- bless { hash => $hash }, $class;
+ bless { file => ( ref $file ? $file : Authen::Htpasswd->new($file, \%extra) ) }, $class;
}
sub get_user {
my ( $self, $id ) = @_;
-
- my $user = $self->{hash}{$id};
-
- bless $user, "Catalyst::Plugin::Authentication::User::Hash"
- unless Scalar::Util::blessed($user);
-
- return $user;
+ Catalyst::Plugin::Authentication::Store::Htpasswd::User->new( $self, $self->file->lookup_user($id) );
}
sub user_supports {
my $self = shift;
- # choose a random user
- scalar keys %{ $self->{hash} };
- ( undef, my $user ) = each %{ $self->{hash} };
+ # this can work as a class method
+ Catalyst::Plugin::Authentication::Store::Htpasswd::User->supports(@_);
+}
- $user->supports(@_);
+sub from_session {
+ my ( $self, $c, $id ) = @_;
+ $self->get_user( $id );
}
__PACKAGE__;
=head1 NAME
-Catalyst::Plugin::Authentication::Store::Minimal::Backend - Minimal
+Catalyst::Plugin::Authentication::Store::Htpasswd::Backend - Htpasswd
authentication storage backend.
=head1 SYNOPSIS
- # you probably just want Store::Minimal under most cases,
+ # you probably just want Store::Htpasswd under most cases,
# but if you insist you can instantiate your own store:
- use Catalyst::Plugin::Authentication::Store::Minimal::Backend;
+ use Catalyst::Plugin::Authentication::Store::Htpasswd::Backend;
use Catalyst qw/
Authentication
user => { password => "s3cr3t" },
);
- our $users = Catalyst::Plugin::Authentication::Store::Minimal::Backend->new(\%users);
+ our $users = Catalyst::Plugin::Authentication::Store::Htpasswd::Backend->new(\%users);
sub action : Local {
my ( $self, $c ) = @_;
=head1 DESCRIPTION
-You probably want L<Catalyst::Plugin::Authentication::Store::Minimal>, unless
-you are mixing several stores in a single app and one of them is Minimal.
+You probably want L<Catalyst::Plugin::Authentication::Store::Htpasswd>, unless
+you are mixing several stores in a single app and one of them is Htpasswd.
Otherwise, this lets you create a store manually.