diff --git a/lib/AccountManager/WebRequest.pm b/lib/AccountManager/WebRequest.pm index a1c978c23eac7350c46b35219661d2ce46ca6638..ebee8ea865ecfaef04cdb8e57feaac2aa72205cb 100644 --- a/lib/AccountManager/WebRequest.pm +++ b/lib/AccountManager/WebRequest.pm @@ -71,16 +71,6 @@ sub new { sub run { my ($self) = @_; - $self->execute(); - $self->respond(); -} - -## Execute a web request -sub execute { - my ($self) = @_; - - my $status; - # process input parameters my %parameters = $self->{cgi}->Vars(); @@ -100,7 +90,7 @@ sub execute { $self->{logger}->error( "Incorrect parameter format : $parameter" ); - return; + $self->respond(); } } @@ -143,12 +133,12 @@ sub execute { # process requested action if ($actions{$action}) { my $method = $actions{$action}; - $status = $self->$method(); + $self->$method(); } else { - ## inknown action + ## unknown action push @{ $self->{out}->{errors} }, "unknown_action"; $self->{logger}->error( "Unknown action '$action'"); - + $self->respond(); } return 1; @@ -195,14 +185,14 @@ sub req_account_wizard { if ($EVAL_ERROR) { push @{ $self->{out}->{errors} }, "internal"; $self->{logger}->error("Failed to load federation metadata: $EVAL_ERROR"); - return; + $self->respond(); } $self->{out}->{metadata} = $metadata->parse(type => 'sp'); $self->{out}->{subtitle} = 'Select your Service Provider'; - return 1; + $self->respond(); } ## Select a Service Provider and return metadata sctucture for the SP @@ -213,7 +203,7 @@ sub req_select_sp { unless ($self->{in}->{sp_entityid}) { push @{ $self->{out}->{errors} }, "missing_sp_entityid"; $self->{logger}->error("Missing parameter sp_entityid"); - return; + $self->respond(); } # Create a persistent service provider object @@ -236,7 +226,7 @@ sub req_select_sp { if ($EVAL_ERROR) { push @{ $self->{out}->{errors} }, "internal"; $self->{logger}->error("Failed to load federation metadata: $EVAL_ERROR"); - return; + $self->respond(); } my $sps = $metadata->parse(id => $self->{in}->{sp_entityid}); @@ -245,7 +235,7 @@ sub req_select_sp { $self->{logger}->errorf( "No such SP '%s' in metadata", $self->{in}->{sp_entityid} ); - return; + $self->respond(); } my $sp = $sps->[0]; @@ -258,7 +248,7 @@ sub req_select_sp { unless ($provider->save()) { push @{ $self->{out}->{errors} }, "internal"; $self->{logger}->error("Failed to save service provider object"); - return; + $self->respond(); } } @@ -280,7 +270,7 @@ sub req_select_sp { $self->{out}->{provider} = $provider; $self->{out}->{subtitle} = 'Select your Service Provider'; - return 1; + $self->respond(); } ## Generate an authentication token to validate an email address @@ -291,13 +281,13 @@ sub req_generate_token { unless ($self->{in}->{sp_entityid}) { push @{ $self->{out}->{errors} }, "missing_sp_entityid"; $self->{logger}->error("Missing parameter sp_entityid"); - return; + $self->respond(); } unless ($self->{in}->{email_address}) { push @{ $self->{out}->{errors} }, "missing_email_address"; $self->{logger}->error("Missing parameter email_address"); - return; + $self->respond(); } my $provider = AccountManager::Service->new( @@ -308,7 +298,7 @@ sub req_generate_token { unless ($provider->load(speculative => 1)) { push @{ $self->{out}->{errors} }, "no_such_entity"; $self->{logger}->errorf("No such SP '%s' in database", $self->{in}->{sp_entityid}); - return; + $self->respond(); } # override metadata contacts if needed @@ -335,7 +325,7 @@ sub req_generate_token { $self->{in}->{sp_entityid}, $self->{in}->{email_address} ); - return; + $self->respond(); } # delete any previous token for the same email/service couple @@ -352,7 +342,7 @@ sub req_generate_token { "Failed to delete previous authentication token with ID %s", $old_token->id() ); - return; + $self->respond(); } } @@ -371,7 +361,7 @@ sub req_generate_token { unless ($token->save()) { push @{ $self->{out}->{errors} }, "internal"; $self->{logger}->error("Failed to save authentication token"); - return; + $self->respond(); } $self->{out}->{email_address} = $self->{in}->{email_address}; @@ -386,7 +376,7 @@ sub req_generate_token { open(my $handle, '|-', "$sendmail -f $sender $recipient") or do { push @{ $self->{out}->{errors} }, "mail_notification_error"; $self->{logger}->errorf("Unable to run sendmail executable: %s", $ERRNO); - return; + $self->respond(); }; my $tt2 = Template->new({ @@ -412,7 +402,7 @@ sub req_generate_token { unless ($tt2->process($template, $data, $handle)) { push @{ $self->{out}->{errors} }, "mail_notification_error"; $self->{logger}->errorf("Mail notification error: %s", $tt2->error()); - return; + $self->respond(); } close $handle; @@ -424,7 +414,7 @@ sub req_generate_token { $token->token(), ); - return 1; + $self->respond(); } ## Validate an authentication token @@ -436,13 +426,13 @@ sub req_validate_token { unless ($self->{in}->{sp_entityid}) { push @{ $self->{out}->{errors} }, "missing_sp_entityid"; $self->{logger}->error("Missing parameter sp_entityid"); - return; + $self->respond(); } unless ($self->{in}->{authentication_token}) { push @{ $self->{out}->{errors} }, "missing_authentication_token"; $self->{logger}->error("Missing parameter authentication_token"); - return; + $self->respond(); } my $token = AccountManager::Token->new( @@ -457,7 +447,7 @@ sub req_validate_token { $self->{in}->{authentication_token}, $self->{in}->{sp_entityid} ); - return; + $self->respond(); } if (! $token->sp_entityid() eq $self->{in}->{sp_entityid}) { @@ -467,7 +457,7 @@ sub req_validate_token { $self->{in}->{authentication_token}, $self->{in}->{sp_entityid} ); - return; + $self->respond(); } ## delete the token @@ -511,7 +501,7 @@ sub req_validate_token { "Failed to create test accounts for SP with entityid %s", $self->{in}->{sp_entityid} ); - return; + $self->respond(); } ## Update simpleSAMLphp configuration to enable test accounts @@ -532,7 +522,7 @@ sub req_validate_token { "Failed to create simpleSAMLphp configuration file: %s", $EVAL_ERROR ); - return; + $self->respond(); } $self->{logger}->infof( @@ -545,14 +535,14 @@ sub req_validate_token { $self->{out}->{accounts} = \@accounts; $self->{out}->{subtitle} = 'Complete Email Challenge'; - return 1; + $self->respond(); } ## Return the homepage of the service sub req_home { my ($self) = @_; - return 1; + $self->respond(); } 1;