From 4c393874772a2d341d171d12fce685e435508f11 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sat, 8 Feb 2014 21:15:50 +0000 Subject: [PATCH] Fix redirect when accessing a deep link when unauthenticated --- Netdisco/Changes | 1 + Netdisco/lib/App/Netdisco/Web/AuthN.pm | 11 +++++++---- Netdisco/share/views/index.tt | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Netdisco/Changes b/Netdisco/Changes index 80fd1a7b..8215aa1e 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -19,6 +19,7 @@ * [#84] No longer use dns as a key into devices; cope with dupe dns (LT) * Correct date formatting and logic in IP Inventory report + * Fix redirect when accessing a deep link when unauthenticated 2.022000 - 2014-01-26 diff --git a/Netdisco/lib/App/Netdisco/Web/AuthN.pm b/Netdisco/lib/App/Netdisco/Web/AuthN.pm index c443e498..51eb9c1d 100644 --- a/Netdisco/lib/App/Netdisco/Web/AuthN.pm +++ b/Netdisco/lib/App/Netdisco/Web/AuthN.pm @@ -5,7 +5,8 @@ use Dancer::Plugin::DBIC; use Dancer::Plugin::Auth::Extensible; hook 'before' => sub { - params->{return_url} ||= uri_for('/inventory'); + params->{return_url} ||= ((request->path ne uri_for('/')->path) + ? request->path : uri_for('/inventory')); if (! session('logged_in_user') && request->path ne uri_for('/login')->path) { if (setting('trust_x_remote_user') and scalar request->header('X-REMOTE_USER')) { @@ -28,7 +29,7 @@ hook 'before' => sub { }; get qr{^/(?:login(?:/denied)?)?} => sub { - template 'index'; + template 'index', { return_url => params->{return_url} }; }; # override default login_handler so we can log access in the database @@ -50,7 +51,7 @@ post '/login' => sub { }); return if request->is_ajax; - redirect params->{return_url} || uri_for('/'); + redirect params->{return_url}; } else { session->destroy; @@ -67,7 +68,9 @@ post '/login' => sub { } else { vars->{login_failed}++; - forward uri_for('/login'), { login_failed => 1 }, { method => 'GET' }; + forward uri_for('/login'), + { login_failed => 1, return_url => params->{return_url} }, + { method => 'GET' }; } } }; diff --git a/Netdisco/share/views/index.tt b/Netdisco/share/views/index.tt index 538de26c..84fef330 100644 --- a/Netdisco/share/views/index.tt +++ b/Netdisco/share/views/index.tt @@ -42,8 +42,8 @@ - [% IF vars.return_url %] - + [% IF params.return_url %] + [% END %] [% ELSE %]