Ignore:
Timestamp:
04/28/17 10:54:50 (7 years ago)
Author:
nanardon
Message:

Improve loadpasswd feature

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Tools/LoadPasswd.pm

    r2003 r2006  
    22use Moose; 
    33use namespace::autoclean; 
     4 
     5use LATMOS::Accounts::Log; 
    46 
    57BEGIN { extends 'Catalyst::Controller'; } 
     
    2527    my ( $self, $c ) = @_; 
    2628 
    27     my $account = $c->model('Account'); 
     29    my $account = $c->model('Accounts'); 
    2830 
    2931    if (my $upload = $c->req->upload('input')) { 
    3032 
    3133        my $crypt = $c->req->param('crypt'); 
     34        my $force = $c->req->param('force'); 
    3235 
    3336        my $fh =  $upload->fh; 
    3437        while (my $line = <$fh>) { 
    35             my ($username, $password) = split(/:/); 
     38            my ($username, $password) = split(/:/, $line); 
    3639            $username or next; 
    3740            $password or next; 
    3841 
    3942            if ($crypt) { 
    40                 my $user = $c->model('Accounts')->db->get_objects('user', $username) 
    41                     or next; 
    42                 $user->InjectCryptPasswd($password); 
     43                my $user = $account->db->get_objects('user', $username) 
     44                    or do { 
     45                    push(@{ $c->stash->{Pass} }, { u => $username, r => 'No such user' });   
     46                    next; 
     47                }; 
     48                $account->db->check_acl($user, 'userPassword', 'w')  
     49                    or do { 
     50                    push(@{ $c->stash->{Pass} }, { u => $username, r => 'Permission denied' });   
     51                    next; 
     52                }; 
     53 
     54                if ($user->InjectCryptPasswd($password)) { 
     55                    push(@{ $c->stash->{Pass} }, { u => $username, r => 'Injected' }); 
     56                } else { 
     57                    push(@{ $c->stash->{Pass} }, { u => $username, r => 'Error: ' . LATMOS::Accounts::Log::lastmessage(LA_ERR) }); 
     58                } 
    4359            } else { 
    44                 $c->model('Accounts')->ChangeUserPassword($username, $password); 
     60                my $message = $account->ChangeUserPassword($username, $password, $force); 
     61                push(@{ $c->stash->{Pass} }, { u => $username, r => $message || 'Changed' }); 
    4562            } 
    4663        } 
    4764    } 
    4865} 
    49  
    50  
    5166 
    5267=encoding utf8 
Note: See TracChangeset for help on using the changeset viewer.