diff options
Diffstat (limited to 'perllib')
-rw-r--r-- | perllib/Catalyst/Plugin/Session/State/Cookie.pm | 3 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Auth.pm | 8 |
2 files changed, 8 insertions, 3 deletions
diff --git a/perllib/Catalyst/Plugin/Session/State/Cookie.pm b/perllib/Catalyst/Plugin/Session/State/Cookie.pm index e0a651ed9..bef0c1e66 100644 --- a/perllib/Catalyst/Plugin/Session/State/Cookie.pm +++ b/perllib/Catalyst/Plugin/Session/State/Cookie.pm @@ -50,6 +50,9 @@ sub update_session_cookie { sub cookie_is_rejecting { my ( $c, $cookie ) = @_; + # Prevent infinite loop in request->path. mySociety addition + return 0 if $c->request->has_uri && !$c->request->_has_path; + # Don't output cookie for JS or JPEG files. mySociety addition return 1 if substr($c->request->path, -3) eq '.js' || substr($c->request->path, -5) eq '.jpeg'; diff --git a/perllib/FixMyStreet/App/Controller/Auth.pm b/perllib/FixMyStreet/App/Controller/Auth.pm index 53ef13462..6de416c53 100644 --- a/perllib/FixMyStreet/App/Controller/Auth.pm +++ b/perllib/FixMyStreet/App/Controller/Auth.pm @@ -36,10 +36,12 @@ sub general : Path : Args(0) { return unless $c->req->method eq 'POST'; # decide which action to take - my $has_password = $c->get_param('sign_in') || $c->get_param('password_sign_in'); - my $has_email = $c->get_param('email_sign_in') || $c->get_param('name') || $c->get_param('password_register'); + my $clicked_password = $c->get_param('sign_in'); + my $clicked_email = $c->get_param('email_sign_in'); + my $data_password = $c->get_param('password_sign_in'); + my $data_email = $c->get_param('name') || $c->get_param('password_register'); - $c->detach('email_sign_in') if $has_email && !$has_password; + $c->detach('email_sign_in') if $clicked_email || ($data_email && !$data_password); $c->forward( 'sign_in' ) && $c->detach( 'redirect_on_signin', [ $c->get_param('r') ] ); |