* fixed a nasty bug in compat mode with store::minimal. From the comments left in...
[catagits/Catalyst-Plugin-Authentication.git] / lib / Catalyst / Authentication / Store / Minimal.pm
index 155a921..6fa764f 100644 (file)
@@ -77,12 +77,32 @@ sub get_user {
 sub setup {
     my $c = shift;
 
-    $c->default_auth_store(
-        __PACKAGE__->new( 
-            $c->config->{'Plugin::Authentication'}, $c
-        )
-    );
+    ### If a user does 'use Catalyst qw/Authentication::Store::Minimal/'
+    ### he will be proxied on to this setup routine (and only then --
+    ### non plugins should NOT have their setup routine invoked!)
+    ### Beware what we pass to the 'new' routine; it wants
+    ### a config has with a top level key 'users'. New style
+    ### configs do not have this, and split by realms. If we
+    ### blindly pass this to new, we will 1) overwrite what we
+    ### already passed and 2) make ->userhash undefined, which
+    ### leads to:
+    ###  Can't use an undefined value as a HASH reference at
+    ###  lib/Catalyst/Authentication/Store/Minimal.pm line 38.
+    ###
+    ### So only do this compatibility call if:
+    ### 1) we have a {users} config directive 
+    ###
+    ### Ideally we could also check for:
+    ### 2) we don't already have a ->userhash
+    ### however, that's an attribute of an object we can't 
+    ### access =/ --kane
+    
+    my $cfg = $c->config->{'Plugin::Authentication'}->{users}
+                ? $c->config->{'Plugin::Authentication'}
+                : undef;
 
+    $c->default_auth_store( __PACKAGE__->new( $cfg, $c ) ) if $cfg;
+    
        $c->NEXT::setup(@_);
 }