Merge branch 'og-logged-in-user-fix'
Conflicts: Netdisco/lib/App/Netdisco.pm
This commit is contained in:
@@ -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
|
2.027006 - 2014-05-27
|
||||||
|
|
||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|||||||
@@ -80,4 +80,4 @@ resources:
|
|||||||
homepage: http://netdisco.org/
|
homepage: http://netdisco.org/
|
||||||
license: http://opensource.org/licenses/bsd-license.php
|
license: http://opensource.org/licenses/bsd-license.php
|
||||||
repository: git://git.code.sf.net/p/netdisco/netdisco-ng
|
repository: git://git.code.sf.net/p/netdisco/netdisco-ng
|
||||||
version: 2.027006
|
version: 2.027007
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use 5.010_000;
|
use 5.010_000;
|
||||||
|
|
||||||
our $VERSION = '2.027006';
|
our $VERSION = '2.027007';
|
||||||
use App::Netdisco::Configuration;
|
use App::Netdisco::Configuration;
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|||||||
@@ -13,12 +13,14 @@ use Dancer::Plugin::DBIC;
|
|||||||
use Dancer::Plugin::Passphrase;
|
use Dancer::Plugin::Passphrase;
|
||||||
use Digest::MD5;
|
use Digest::MD5;
|
||||||
use Net::LDAP;
|
use Net::LDAP;
|
||||||
|
use Try::Tiny;
|
||||||
|
|
||||||
sub authenticate_user {
|
sub authenticate_user {
|
||||||
my ($self, $username, $password) = @_;
|
my ($self, $username, $password) = @_;
|
||||||
return unless defined $username;
|
return unless defined $username;
|
||||||
|
|
||||||
my $user = $self->get_user_details($username) or return;
|
my $user = $self->get_user_details($username) or return;
|
||||||
|
return unless $user->in_storage;
|
||||||
return $self->match_password($password, $user);
|
return $self->match_password($password, $user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,9 +34,20 @@ sub get_user_details {
|
|||||||
my $users_table = $settings->{users_resultset} || 'User';
|
my $users_table = $settings->{users_resultset} || 'User';
|
||||||
my $username_column = $settings->{users_username_column} || 'username';
|
my $username_column = $settings->{users_username_column} || 'username';
|
||||||
|
|
||||||
my $user = $database->resultset($users_table)->find({
|
my $user = try {
|
||||||
$username_column => $username
|
$database->resultset($users_table)->find({
|
||||||
}) or debug("No such user $username");
|
$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;
|
return $user;
|
||||||
}
|
}
|
||||||
@@ -55,7 +68,9 @@ sub get_user_roles {
|
|||||||
my $roles = $settings->{roles_relationship} || 'roles';
|
my $roles = $settings->{roles_relationship} || 'roles';
|
||||||
my $role_column = $settings->{role_column} || 'role';
|
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 {
|
sub match_password {
|
||||||
|
|||||||
Reference in New Issue
Block a user