-#!/usr/bin/perl
-
package Catalyst::Plugin::Authentication::User::Hash;
use base qw/Catalyst::Plugin::Authentication::User/;
sub new {
my $class = shift;
- bless { @_ }, $class;
+ bless { ( @_ > 1 ) ? @_ : %{ $_[0] } }, $class;
}
sub AUTOLOAD {
my $self = shift;
( my $key ) = ( our $AUTOLOAD =~ m/([^:]*)$/ );
- $self->_accessor( $key, @_ );
+ $self->_accessor( $key, @_ );
}
+# this class effectively handles any method calls
+sub can { 1 }
+
sub id {
- my $self = shift;
- $self->_accessor( "id", @_ );
+ my $self = shift;
+ $self->_accessor( "id", @_ );
}
-sub store {
- my $self = shift;
- ref $self || $self;
-}
+## deprecated. Let the base class handle this.
+# sub store {
+# my $self = shift;
+# $self->_accessor( "store", @_ ) || ref $self;
+# }
sub _accessor {
- my $self = shift;
- my $key = shift;
+ my $self = shift;
+ my $key = shift;
if (@_) {
my $arr = $self->{__hash_obj_key_is_array}{$key} = @_ > 1;
: $data;
}
+## password portion of this is no longer necessary, but here for backwards compatibility.
my %features = (
password => {
clear => ["password"],
my $cursor = \%features;
+ return 1 if @spec == 1 and exists $self->{ $spec[0] };
+
# traverse the feature list,
for (@spec) {
- die "bad feature spec: @spec"
- if ref($cursor) ne "HASH";
+ return if ref($cursor) ne "HASH";
$cursor = $cursor->{$_};
}
sub for_session {
my $self = shift;
- return $self; # let's hope we're serialization happy
+
+ return $self; # we serialize the whole user
}
sub from_session {
- my ( $self, $c, $user ) = @_;
- $user;
+ my ( $self, $c, $user ) = @_;
+ $user;
}
__PACKAGE__;
Accessor for the key whose name is the method.
+=item id
+
+=item store
+
+Accessors that override superclass's dying virtual methods.
+
=back
=head1 SEE ALSO