[Catalyst-commits] r6567 - in trunk/Catalyst-Plugin-Authentication:
. lib/Catalyst/Plugin
matthewt at dev.catalyst.perl.org
matthewt at dev.catalyst.perl.org
Tue Jul 17 17:59:43 GMT 2007
Author: matthewt
Date: 2007-07-17 17:59:43 +0100 (Tue, 17 Jul 2007)
New Revision: 6567
Modified:
trunk/Catalyst-Plugin-Authentication/
trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/Authentication.pm
Log:
r53854 at cain (orig r6519): jayk | 2007-07-11 15:09:03 +0000
Improving compatibility with the 'store' and 'stores' config options from 0.09
Property changes on: trunk/Catalyst-Plugin-Authentication
___________________________________________________________________
Name: svk:merge
- 4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-Plugin-Authentication:6514
+ 4ad37cd2-5fec-0310-835f-b3785c72a374:/branches/Catalyst-Plugin-Authentication:6519
Modified: trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/Authentication.pm
===================================================================
--- trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/Authentication.pm 2007-07-17 16:59:39 UTC (rev 6566)
+++ trunk/Catalyst-Plugin-Authentication/lib/Catalyst/Plugin/Authentication.pm 2007-07-17 16:59:43 UTC (rev 6567)
@@ -21,7 +21,7 @@
# constant->import(have_want => eval { require Want });
#}
-our $VERSION = "0.09999_02";
+our $VERSION = "0.10000";
sub set_authenticated {
my ( $c, $user, $realmname ) = @_;
@@ -210,12 +210,19 @@
}
} else {
- ## BACKWARDS COMPATIBILITY - if realm is not defined - then we are probably dealing
+ ## BACKWARDS COMPATIBILITY - if realms is not defined - then we are probably dealing
## with an old-school config. The only caveat here is that we must add a classname
+ ## also - we have to treat {store} as {stores}{default} - because
+ ## while it is not a clear as a valid config in the docs, it
+ ## is functional with the old api. Whee!
+ if (exists($cfg->{'store'}) && !exists($cfg->{'stores'}{'default'})) {
+ $cfg->{'stores'}{'default'} = $cfg->{'store'};
+ }
+
foreach my $storename (keys %{$cfg->{'stores'}}) {
my $realmcfg = {
- store => $cfg->{'stores'}{$storename},
+ store => { class => $cfg->{'stores'}{$storename} },
};
$app->setup_auth_realm($storename, $realmcfg);
}
@@ -246,7 +253,7 @@
# a little niceness - since most systems seem to use the password credential class,
# if no credential class is specified we use password.
- $config->{credential}{class} ||= "Catalyst::Plugin::Authentication::Credential::Password";
+ $config->{credential}{class} ||= '+Catalyst::Plugin::Authentication::Credential::Password';
my $credentialclass = $config->{'credential'}{'class'};
@@ -274,8 +281,20 @@
};
}
- $app->auth_realms->{$realmname}{'store'} = $storeclass->new($config->{'store'}, $app);
- $app->auth_realms->{$realmname}{'credential'} = $credentialclass->new($config->{'credential'}, $app);
+ ## a little cruft to stay compatible with some poorly written stores / credentials
+ ## we'll remove this soon.
+ if ($storeclass->can('new')) {
+ $app->auth_realms->{$realmname}{'store'} = $storeclass->new($config->{'store'}, $app);
+ } else {
+ $app->log->error("THIS IS DEPRECATED: $storeclass has no new() method - Attempting to use uninstantiated");
+ $app->auth_realms->{$realmname}{'store'} = $storeclass;
+ }
+ if ($credentialclass->can('new')) {
+ $app->auth_realms->{$realmname}{'credential'} = $credentialclass->new($config->{'credential'}, $app);
+ } else {
+ $app->log->error("THIS IS DEPRECATED: $credentialclass has no new() method - Attempting to use uninstantiated");
+ $app->auth_realms->{$realmname}{'credential'} = $credentialclass;
+ }
}
sub auth_realms {
@@ -356,8 +375,14 @@
if ( my $new = shift ) {
$self->auth_realms->{'default'}{'store'} = $new;
- my $storeclass = ref($new);
+ my $storeclass;
+ if (ref($new)) {
+ $storeclass = ref($new);
+ } else {
+ $storeclass = $new;
+ }
+
# BACKWARDS COMPATIBILITY - if the store class does not define find_user, we define it in terms
# of get_user and add it to the class. this is because the auth routines use find_user,
# and rely on it being present. (this avoids per-call checks)
More information about the Catalyst-commits
mailing list