From: <de...@de...> - 2010-09-29 04:41:48
|
Author: PeterThoeny Date: 2010-09-28 23:41:40 -0500 (Tue, 28 Sep 2010) New Revision: 19520 Trac url: http://develop.twiki.org/trac/changeset/19520 Modified: twiki/trunk/core/lib/TWiki/Users/HtPasswdUser.pm Log: Item6528: Adding logic to save user data in password handler. Yay, user friendly admin maintenance is now ready to use!! This is part of TWiki:Codev.SetFlagtoChangePassword feature Modified: twiki/trunk/core/lib/TWiki/Users/HtPasswdUser.pm =================================================================== --- twiki/trunk/core/lib/TWiki/Users/HtPasswdUser.pm 2010-09-28 08:28:52 UTC (rev 19519) +++ twiki/trunk/core/lib/TWiki/Users/HtPasswdUser.pm 2010-09-29 04:41:40 UTC (rev 19520) @@ -445,11 +445,11 @@ my $pwdChgStr = ''; if( $db->{$cUID}->{pwdChgTime} ) { $pwdChgStr = '%CALC{$FORMATGMTIME(' - . $db->{$cUID}->{pwdChgTime} - . ', $year-$mo-$day $hour:$min GMT)}%' - . ' (%CALC{$FORMATTIMEDIFF(minute, 1, $TIMEDIFF(' - . $db->{$cUID}->{pwdChgTime} - . ', $TIME(), minute))}% ago)'; + . $db->{$cUID}->{pwdChgTime} + . ', $year-$mo-$day $hour:$min GMT)}%' + . ' (%CALC{$FORMATTIMEDIFF(sec, 1, $TIMEDIFF(' + . $db->{$cUID}->{pwdChgTime} + . ', $TIME(), sec))}% ago)'; } my $data; @@ -492,9 +492,55 @@ sub setUserData { my( $this, $cUID, $data ) = @_; -# FIXME + + my $emails = ''; + my $password = ''; + my $confirm = ''; + my $mcp = 0; + my $disable = 0; + + foreach my $item ( @{$data} ) { + my $name = $item->{name}; + my $value = $item->{value}; + if( $name eq 'emails' ) { + $emails = join( ';', split( /[,; ]+/, $value ) ); + } elsif( $name eq 'password' ) { + $password = $value; + } elsif( $name eq 'confirm' ) { + $confirm = $value; + } elsif( $name eq 'mcp' ) { + $mcp = 1 if( $value ); + } elsif( $name eq 'disable' ) { + $disable = 1 if( $value ); + } + } + + try { + my $db = $this->_readPasswd(); + + unless ( $db->{$cUID} ) { + return "Error: User =$cUID= does not exist"; + } + + if( $password && $confirm ) { + if( $password ne $confirm ) { + return 'Error: Passwords do not match'; + } + $db->{$cUID}->{pass} = $this->encrypt( $cUID, $password, 1 ); + $db->{$cUID}->{pwdChgTime} = time(); + } + $db->{$cUID}->{emails} = $emails; + $db->{$cUID}->{mustChgPwd} = $mcp; + $db->{$cUID}->{disabled} = $disable; + + _savePasswd( $db ); + + } catch Error::Simple with { + $this->{error} = $!; + return 'Error: Failed to update user data - ' . $!; + } + return ''; } 1; - |