#! /usr/bin/perl -w use warnings "all"; use strict; use Data::Dumper; use lib '../calcms'; use CGI; use config; use time; use uac; my $cgi=new CGI(); my $params=$cgi->Vars(); my $config =config::get('../../piradio.de/agenda/config/config.cgi'); $params=check_params($params); our $errors=[]; change_password($config, $params); sub change_password{ my $config=shift; my $params=shift; my $userName=$params->{user_name}||''; if ($userName eq ''){ error ("user '$userName' not found"); exit; } my $user=uac::get_user($config, $userName); unless ( (defined $user) && (defined $user->{id}) && ($user->{id}ne'') ){ error( "user id not found"); exit; } unless (defined $params->{user_password}){ error("missing password for $userName"); exit; } unless(check_password($params->{user_password})){ error ("password does not meet requirements"); exit; } my $crypt=auth::crypt_password($params->{user_password}); $user={ id => $user->{id} }; $user->{salt}=$crypt->{salt}; $user->{pass}=$crypt->{crypt}; #print '
'.Dumper($user).'
'; $config->{access}->{write}=1; uac::update_user($config, $user); $config->{access}->{write}=0; print STDERR "password changed for $userName\n"; print STDERR Dumper($user); } sub check_password{ my $password=shift; unless(defined $password || $password eq ''){ error("password is empty"); return 0; } if(length($password)<8){ error("password to short"); return 0; } unless($password=~/[a-z]/){ error("password should contains at least one small character"); return 0; } unless($password=~/[A-Z]/){ error("password should contains at least one big character"); return 0; } unless($password=~/[0-9]/){ error("password should contains at least one number"); return 0; } unless($password=~/[^a-zA-Z0-9]/){ error("password should contains at least one special character"); return 0; } return 1; } sub check_params{ my $params=shift; my $checked={}; for my $param ('user_name', 'user_password', 'user_password2'){ if (defined $params->{$param}){ $checked->{$param}=$params->{$param}; } } #print Dumper($params); #print '
'.Dumper($checked).'
'; return $checked; } sub error{ print STDERR "ERROR - ".$_[0]."\n"; }