summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Auth
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2008-08-07 06:38:22 +0200
committermkanat%bugzilla.org <>2008-08-07 06:38:22 +0200
commit70540fb131c58cf4fb012854759eef2d73528a30 (patch)
tree82b80ac0bebf506a2852a71606f52bda32f195d0 /Bugzilla/Auth
parentbea9199267de2fe96c3214f17b4119ae87dd6a26 (diff)
downloadbugzilla-70540fb131c58cf4fb012854759eef2d73528a30.tar.gz
bugzilla-70540fb131c58cf4fb012854759eef2d73528a30.tar.xz
Bug 438435: Need code hooks for authentication
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat
Diffstat (limited to 'Bugzilla/Auth')
-rw-r--r--Bugzilla/Auth/Login/Stack.pm16
-rw-r--r--Bugzilla/Auth/Verify/Stack.pm16
2 files changed, 24 insertions, 8 deletions
diff --git a/Bugzilla/Auth/Login/Stack.pm b/Bugzilla/Auth/Login/Stack.pm
index d51003861..ab9a93bce 100644
--- a/Bugzilla/Auth/Login/Stack.pm
+++ b/Bugzilla/Auth/Login/Stack.pm
@@ -26,16 +26,24 @@ use fields qw(
_stack
successful
);
+use Hash::Util qw(lock_keys);
+use Bugzilla::Hook;
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
my $list = shift;
+ my %methods = map { $_ => "Bugzilla/Auth/Login/$_.pm" } split(',', $list);
+ lock_keys(%methods);
+ Bugzilla::Hook::process('auth-login_methods', { modules => \%methods });
+
$self->{_stack} = [];
- foreach my $login_method (split(',', $list)) {
- require "Bugzilla/Auth/Login/${login_method}.pm";
- push(@{$self->{_stack}},
- "Bugzilla::Auth::Login::$login_method"->new(@_));
+ foreach my $login_method (keys %methods) {
+ my $module = $methods{$login_method};
+ require $module;
+ $module =~ s|/|::|g;
+ $module =~ s/.pm$//;
+ push(@{$self->{_stack}}, $module->new(@_));
}
return $self;
}
diff --git a/Bugzilla/Auth/Verify/Stack.pm b/Bugzilla/Auth/Verify/Stack.pm
index 577b5a22f..0ddb9a441 100644
--- a/Bugzilla/Auth/Verify/Stack.pm
+++ b/Bugzilla/Auth/Verify/Stack.pm
@@ -21,16 +21,24 @@ use fields qw(
_stack
successful
);
+use Hash::Util qw(lock_keys);
+use Bugzilla::Hook;
sub new {
my $class = shift;
my $list = shift;
my $self = $class->SUPER::new(@_);
+ my %methods = map { $_ => "Bugzilla/Auth/Verify/$_.pm" } split(',', $list);
+ lock_keys(%methods);
+ Bugzilla::Hook::process('auth-verify_methods', { modules => \%methods });
+
$self->{_stack} = [];
- foreach my $verify_method (split(',', $list)) {
- require "Bugzilla/Auth/Verify/${verify_method}.pm";
- push(@{$self->{_stack}},
- "Bugzilla::Auth::Verify::$verify_method"->new(@_));
+ foreach my $verify_method (keys %methods) {
+ my $module = $methods{$verify_method};
+ require $module;
+ $module =~ s|/|::|g;
+ $module =~ s/.pm$//;
+ push(@{$self->{_stack}}, $module->new(@_));
}
return $self;
}