File Coverage

blib/lib/App/PAIA/Command/change.pm
Criterion Covered Total %
statement 9 26 34.6
branch 0 4 0.0
condition 0 3 0.0
subroutine 3 4 75.0
pod n/a
total 12 37 32.4


line stmt bran cond sub pod time code
1             package App::PAIA::Command::change;
2 4     4   2045 use strict;
  4         7  
  4         116  
3 4     4   30 use v5.10;
  4         11  
  4         126  
4 4     4   14 use parent 'App::PAIA::Command';
  4         5  
  4         29  
5              
6             sub _execute {
7 0     0     my ($self, $opt, $args) = @_;
8              
9 0   0       my $auth = $self->auth // $self->usage_error("missing PAIA auth URL");
10              
11 0           my %params = (
12             patron => $self->patron,
13             username => $self->username,
14             old_password => $self->password,
15             );
16              
17 0           $self->auto_login_for('change');
18              
19             # Password should not be given as command line option, but as input
20             # TODO: better way to get a new password, without echoing
21             # e.g. use Term::ReadKey (ReadMode('noecho')) or TermTerm::ReadPassword
22             # See also App::Cmd::Plugin::Prompt or Term::ReadPassword
23             {
24 0           print "new password: ";
  0            
25 0           chomp(my $pwd = scalar );
26 0 0         if (length($pwd) < 4) {
27 0           say "your password is too short!";
28 0           redo;
29             } else {
30 0           print "please repeat: ";
31 0           chomp(my $pwd2 = scalar );
32 0 0         if ($pwd2 ne $pwd) {
33 0           say "passwords don't match!";
34 0           redo;
35             }
36             }
37 0           $params{new_password} = $pwd;
38             }
39            
40 0           $self->request( "POST", "$auth/change", \%params );
41             }
42              
43             1;
44             __END__