summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Auth/Login/Stack.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Auth/Login/Stack.pm')
-rw-r--r--Bugzilla/Auth/Login/Stack.pm126
1 files changed, 66 insertions, 60 deletions
diff --git a/Bugzilla/Auth/Login/Stack.pm b/Bugzilla/Auth/Login/Stack.pm
index d44ebbd46..7786f26c8 100644
--- a/Bugzilla/Auth/Login/Stack.pm
+++ b/Bugzilla/Auth/Login/Stack.pm
@@ -13,8 +13,8 @@ use warnings;
use base qw(Bugzilla::Auth::Login);
use fields qw(
- _stack
- successful
+ _stack
+ successful
);
use Hash::Util qw(lock_keys);
use Bugzilla::Hook;
@@ -22,81 +22,87 @@ use Bugzilla::Constants;
use List::MoreUtils qw(any);
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)) {
- my $module = $methods{$login_method};
- require $module;
- $module =~ s|/|::|g;
- $module =~ s/.pm$//;
- push(@{$self->{_stack}}, $module->new(@_));
- }
- return $self;
+ 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)) {
+ my $module = $methods{$login_method};
+ require $module;
+ $module =~ s|/|::|g;
+ $module =~ s/.pm$//;
+ push(@{$self->{_stack}}, $module->new(@_));
+ }
+ return $self;
}
sub get_login_info {
- my $self = shift;
- my $result;
- foreach my $object (@{$self->{_stack}}) {
- # See Bugzilla::WebService::Server::JSONRPC for where and why
- # auth_no_automatic_login is used.
- if (Bugzilla->request_cache->{auth_no_automatic_login}) {
- next if $object->is_automatic;
- }
- $result = $object->get_login_info(@_);
- $self->{successful} = $object;
-
- # We only carry on down the stack if this method denied all knowledge.
- last unless ($result->{failure}
- && ($result->{failure} eq AUTH_NODATA
- || $result->{failure} eq AUTH_NO_SUCH_USER));
-
- # If none of the methods succeed, it's undef.
- $self->{successful} = undef;
+ my $self = shift;
+ my $result;
+ foreach my $object (@{$self->{_stack}}) {
+
+ # See Bugzilla::WebService::Server::JSONRPC for where and why
+ # auth_no_automatic_login is used.
+ if (Bugzilla->request_cache->{auth_no_automatic_login}) {
+ next if $object->is_automatic;
}
- return $result;
+ $result = $object->get_login_info(@_);
+ $self->{successful} = $object;
+
+ # We only carry on down the stack if this method denied all knowledge.
+ last
+ unless ($result->{failure}
+ && ( $result->{failure} eq AUTH_NODATA
+ || $result->{failure} eq AUTH_NO_SUCH_USER));
+
+ # If none of the methods succeed, it's undef.
+ $self->{successful} = undef;
+ }
+ return $result;
}
sub fail_nodata {
- my $self = shift;
- # We fail from the bottom of the stack.
- my @reverse_stack = reverse @{$self->{_stack}};
- foreach my $object (@reverse_stack) {
- # We pick the first object that actually has the method
- # implemented.
- if ($object->can('fail_nodata')) {
- $object->fail_nodata(@_);
- }
+ my $self = shift;
+
+ # We fail from the bottom of the stack.
+ my @reverse_stack = reverse @{$self->{_stack}};
+ foreach my $object (@reverse_stack) {
+
+ # We pick the first object that actually has the method
+ # implemented.
+ if ($object->can('fail_nodata')) {
+ $object->fail_nodata(@_);
}
+ }
}
sub can_login {
- my ($self) = @_;
- # We return true if any method can log in.
- foreach my $object (@{$self->{_stack}}) {
- return 1 if $object->can_login;
- }
- return 0;
+ my ($self) = @_;
+
+ # We return true if any method can log in.
+ foreach my $object (@{$self->{_stack}}) {
+ return 1 if $object->can_login;
+ }
+ return 0;
}
sub user_can_create_account {
- my ($self) = @_;
- # We return true if any method allows users to create accounts.
- foreach my $object (@{$self->{_stack}}) {
- return 1 if $object->user_can_create_account;
- }
- return 0;
+ my ($self) = @_;
+
+ # We return true if any method allows users to create accounts.
+ foreach my $object (@{$self->{_stack}}) {
+ return 1 if $object->user_can_create_account;
+ }
+ return 0;
}
sub extern_id_used {
- my ($self) = @_;
- return any { $_->extern_id_used } @{ $self->{_stack} };
+ my ($self) = @_;
+ return any { $_->extern_id_used } @{$self->{_stack}};
}
1;