The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

# $Id: /local/CPAN/Mango/trunk/lib/Mango/Catalyst/Plugin/Authentication/AnonymousUser.pm 1959 2007-08-10T05:27:29.884596Z claco $
use strict;
BEGIN {
};
__PACKAGE__->mk_accessors(qw/password/);
sub new {
my ($class, $c, $config) = @_;
my $name = $config->{'user_model'};
my $model = $c->model($name);
Mango::Exception->throw('MODEL_NOT_FOUND', $name) unless $model;
my $user = $model->result_class->new({
id => '0E0',
username => 'anonymous'
});
return bless {
config => $config,
_context => $c,
_user => $user
}, $class;
};
sub roles {
};
sub profile {
my $self = shift;
my $name = $self->config->{'profile_model'};
my $model = $self->_context->model($name);
Mango::Exception->throw('MODEL_NOT_FOUND', $name) unless $model;
if (!$self->_profile) {
$self->_profile(
$model->result_class->new({
id => $self->_user->id,
first_name => 'Anonymous',
last_name => 'User'
})
);
};
return $self->_profile;
};
sub supported_features {
my $self = shift;
return {
roles => 1,
profiles => 1,
carts => 1
};
};
1;
__END__
=head1 NAME
Mango::Catalyst::Plugin::Authentication::AnonymousUser - Custom Catalyst Authentication Anonymous User
=head1 SYNOPSIS
use Catalyst qw/
-Debug
ConfigLoader
+Mango::Catalyst::Plugin::Authentication
Static::Simple
/;
my $user = $c->user;
print $user->cart->count;
=head1 DESCRIPTION
Mango::Catalyst::Plugin::Authentication::AnonymousUser is a custom user for
users that haven't yet been authenticated, i.e. 'anonymous' users.
=head1 CONSTRUCTOR
=head2 new
There should never be any reason to create one of these yourself. :-)
=head1 METHODS
=head2 cart
Returns a cart for the current user. If no cart exists, one
will be created and assigned to the users current session. The same cart
will be returned for a user before and after they are authenticated.
my $cart = $c->user->cart;
print $cart->count;
$cart->add(...);
Normally, a Mango::Cart is returned. If you are using a custom cart model
that has set its C<result_class> to a custom subclass of Mango::Cart, that
class will be used instead.
=head2 profile
Returns an anonymous profile for the current user. This profile is mostly
empty except for the following fields:
first_name: Anonymous
last_name: User
Normally, a Mango::Profile is returned. If you are using a custom profile model
that has set its C<result_class> to a custom subclass of Mango::Profile, that
class will be used instead.
=head2 roles
Returns an empty list.
=head2 supported_features
Returns an anonymous hash containing the following options:
roles => 1,
profiles => 1,
carts => 1
=head1 SEE ALSO
L<Catalyst::Plugin::Authentication>,
L<Mango::User>, L<Mango::Profile>, L<Mango::Cart>,
L<Mango::Catalyst::Plugin::Authentication::Store>
L<Mango::Catalyst::Plugin::Authentication::User>
L<Mango::Catalyst::Plugin::Authentication::CachedUser>
L<Mango::Catalyst::Plugin::Authentication::AnonymousUser>
=head1 AUTHOR
Christopher H. Laco
CPAN ID: CLACO
claco@chrislaco.com