diff options
author | mkanat%bugzilla.org <> | 2008-08-07 06:38:22 +0200 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2008-08-07 06:38:22 +0200 |
commit | 70540fb131c58cf4fb012854759eef2d73528a30 (patch) | |
tree | 82b80ac0bebf506a2852a71606f52bda32f195d0 /Bugzilla/Auth | |
parent | bea9199267de2fe96c3214f17b4119ae87dd6a26 (diff) | |
download | bugzilla-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.pm | 16 | ||||
-rw-r--r-- | Bugzilla/Auth/Verify/Stack.pm | 16 |
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; } |