File Coverage

blib/lib/Catalyst/Authentication/Store/UserXML/Folder.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package Catalyst::Authentication::Store::UserXML::Folder;
2              
3 1     1   937 use strict;
  1         2  
  1         47  
4 1     1   6 use warnings;
  1         2  
  1         70  
5              
6             our $VERSION = '0.03';
7              
8 1     1   870 use Moose;
  1         608905  
  1         9  
9 1     1   7404 use Catalyst::Authentication::Store::UserXML::User;
  0            
  0            
10             use Path::Class 'file';
11              
12             has 'folder' => (is=>'rw', isa=>'Path::Class::Dir', required => 1);
13             has 'user_folder_file' => (is=>'rw', isa=>'Str', predicate => 'has_user_folder_file');
14              
15             sub find_user {
16             my ( $self, $authinfo, $c ) = @_;
17              
18             my $username = $authinfo->{username};
19             my $file = (
20             $self->has_user_folder_file
21             ? file($self->folder, $username, $self->user_folder_file)
22             : file($self->folder, $username.'.xml')
23             );
24             unless (-r $file) {
25             if (my $fallback = $c->config->{authentication}{userxml}{find_user_fallback}) {
26             return $c->$fallback($authinfo);
27             }
28             return undef;
29             }
30              
31             my $user = Catalyst::Authentication::Store::UserXML::User->new({
32             xml_filename => $file
33             });
34              
35             die 'username in '.$file.' missmatch'
36             if $user->username ne $username;
37              
38             return $user;
39             }
40              
41             sub user_supports {
42             my $self = shift;
43             Catalyst::Authentication::Store::UserXML::User->supports(@_);
44             }
45              
46             sub from_session {
47             my ( $self, $c, $username ) = @_;
48             $self->find_user( { username => $username }, $c );
49             }
50              
51             1;
52