diff options
Diffstat (limited to 'lib/Plack/Middleware/Auth/Htpasswd.pm')
-rw-r--r-- | lib/Plack/Middleware/Auth/Htpasswd.pm | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/Plack/Middleware/Auth/Htpasswd.pm b/lib/Plack/Middleware/Auth/Htpasswd.pm index ff46005..8436912 100644 --- a/lib/Plack/Middleware/Auth/Htpasswd.pm +++ b/lib/Plack/Middleware/Auth/Htpasswd.pm @@ -101,12 +101,14 @@ sub authenticate { return $self->_check_password($self->file, $user, $pass) if defined $self->file; - my $req = Plack::Request->new($env); + my $path = Plack::Request->new($env)->path; my $dir = Path::Class::Dir->new($self->file_root); - my @htpasswd = reverse - map { $_->file('.htpasswd')->stringify } - map { $dir = $dir->subdir($_) } - split m{/}, $req->path; + my @htpasswd = $path ne '/' + ? reverse + map { $_->file('.htpasswd')->stringify } + map { $dir = $dir->subdir($_) } + split m{/}, $path + : ($dir->file('.htpasswd')->stringify); for my $htpasswd (@htpasswd) { next unless -f $htpasswd && -r _; |