aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/Catalyst/Plugin/Session/State/Cookie.pm3
-rw-r--r--perllib/FixMyStreet/App/Controller/Auth.pm8
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') ] );