From 15315b4364af3960bb78ae3c8c2de1c220a4fe41 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Tue, 27 May 2014 10:43:39 +0100 Subject: [PATCH 1/2] allow get_user_details to return truthy when it's OK to have no user --- Netdisco/Changes | 6 +++++ .../App/Netdisco/Web/Auth/Provider/DBIC.pm | 23 +++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Netdisco/Changes b/Netdisco/Changes index c1c4c35d..df03c75c 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -1,3 +1,9 @@ +2.027007 - 2014-05-27 + + [BUG FIXES] + + * allow get_user_details to return truthy when it's OK to have no user + 2.027006 - 2014-05-27 [BUG FIXES] diff --git a/Netdisco/lib/App/Netdisco/Web/Auth/Provider/DBIC.pm b/Netdisco/lib/App/Netdisco/Web/Auth/Provider/DBIC.pm index dfd5d461..d59f527a 100644 --- a/Netdisco/lib/App/Netdisco/Web/Auth/Provider/DBIC.pm +++ b/Netdisco/lib/App/Netdisco/Web/Auth/Provider/DBIC.pm @@ -13,12 +13,14 @@ use Dancer::Plugin::DBIC; use Dancer::Plugin::Passphrase; use Digest::MD5; use Net::LDAP; +use Try::Tiny; sub authenticate_user { my ($self, $username, $password) = @_; return unless defined $username; my $user = $self->get_user_details($username) or return; + return unless $user->in_storage; return $self->match_password($password, $user); } @@ -32,9 +34,20 @@ sub get_user_details { my $users_table = $settings->{users_resultset} || 'User'; my $username_column = $settings->{users_username_column} || 'username'; - my $user = $database->resultset($users_table)->find({ - $username_column => $username - }) or debug("No such user $username"); + my $user = try { + $database->resultset($users_table)->find({ + $username_column => $username + }); + }; + + # each of these settings permits no user in the database + # so create a pseudo user entry instead + if (not $user and (setting('trust_remote_user') + or setting('trust_x_remote_user') + or setting('no_auth'))) { + $user = $database->resultset($users_table) + ->new_result({username => $username}); + } return $user; } @@ -55,7 +68,9 @@ sub get_user_roles { my $roles = $settings->{roles_relationship} || 'roles'; my $role_column = $settings->{role_column} || 'role'; - return [ $user->$roles->get_column( $role_column )->all ]; + return [ try { + $user->$roles->get_column( $role_column )->all; + } ]; } sub match_password { From 39d1ee9a3120e44818bad2a6f7d82df5a76b55e6 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Tue, 27 May 2014 10:44:51 +0100 Subject: [PATCH 2/2] release 2.027007 --- Netdisco/META.yml | 2 +- Netdisco/lib/App/Netdisco.pm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Netdisco/META.yml b/Netdisco/META.yml index 6e5f5471..cffc0962 100644 --- a/Netdisco/META.yml +++ b/Netdisco/META.yml @@ -78,4 +78,4 @@ resources: homepage: http://netdisco.org/ license: http://opensource.org/licenses/bsd-license.php repository: git://git.code.sf.net/p/netdisco/netdisco-ng -version: 2.027006 +version: 2.027007 diff --git a/Netdisco/lib/App/Netdisco.pm b/Netdisco/lib/App/Netdisco.pm index ea728f27..c938ea3f 100644 --- a/Netdisco/lib/App/Netdisco.pm +++ b/Netdisco/lib/App/Netdisco.pm @@ -4,7 +4,7 @@ use strict; use warnings; use 5.010_000; -our $VERSION = '2.027006'; +our $VERSION = '2.027007'; use App::Netdisco::Environment; use Dancer ':script';