#!/usr/bin/perl -wT # # TWiki Collaboration Platform, http://TWiki.org/ # # Copyright (C) 2000-2003 Peter Thoeny, Peter@Thoeny.com # Copyright (C) 2001 Klaus Wriessnegger, kw@sap.com # # For licensing info read license.txt file in the TWiki root. # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details, published at # http://www.gnu.ai.mit.edu/copyleft/gpl.html # #NOTE: the reset code is in this script because it needs to be in an un-authenticated # script (see the .htaccess file) # the matching InstallPassword code is protected, but still risky (anyone who has a valid # htpasswd entry can call it by hand #usage example: # # #R e s e t # #
#Username
#New password #retype New password # # # # BEGIN { # Set default current working directory if( $ENV{"SCRIPT_FILENAME"} && $ENV{"SCRIPT_FILENAME"} =~ /^(.+)\/[^\/]+$/ ) { chdir $1; } # Set library paths in @INC at compile time unshift @INC, '.'; require 'setlib.cfg'; } use CGI::Carp qw(fatalsToBrowser); use CGI; use TWiki; use TWiki::User; use TWiki::User::HtPasswdUser; $query= new CGI; &main(); sub main { my $wikiName = $query->param( 'username' ); #initialize my $topicName = $query->param( 'TopicName' ); my $thePathInfo = $query->path_info(); my $theUrl = $query->url; ( $topic, $webName ) = &TWiki::initialize( $thePathInfo, $wikiName, $topicName, $theUrl, $query ); my $text = ""; my $url = ""; my $theRemoteUser = $query->remote_user(); my ( $dummy1, $dummy2, $dummy3, $userName ) = &TWiki::initialize( $thePathInfo, $theRemoteUser, $topicName, $theUrl, $query ); my $action = $query->param("installPasswd"); if ( $action eq "requestReset" ) { showEncryptedPasswd ($webName, $topic); } else { $url = &TWiki::getOopsUrl( $webName, $topic, "oopsmanage"); TWiki::redirect( $query, $url ); } } #============================================== # ($webName, $topic) sub showEncryptedPasswd { my ($webName, $topic) = @_; # get all parameters from the form my $wikiName = $query->param( 'username' ); my $passwordA = $query->param( 'password' ); my $passwordB = $query->param( 'passwordA' ); my $url = ""; # check if required fields are filled in if( ! $wikiName || ! $passwordA ) { $url = &TWiki::getOopsUrl( $webName, $topic, "oopsregrequ", ); TWiki::redirect( $query, $url ); return; } # check if user entry exists if( ( $wikiName ) && (! TWiki::User::UserPasswordExists( $wikiName ) ) ) { # PTh 20 Jun 2000: changed to getOopsUrl $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnotwikiuser", $wikiName ); TWiki::redirect( $query, $url ); return; } # check if passwords are identical if( $passwordA ne $passwordB ) { $url = &TWiki::getOopsUrl( $webName, $topic, "oopsregpasswd" ); TWiki::redirect( $query, $url ); return; } my $theCryptPassword = &TWiki::User::HtPasswdUser::_htpasswdGeneratePasswd( $wikiName, $passwordA ); # and finally display the reset password page $url = &TWiki::getOopsUrl( $webName, $wikiName, "oopsresetpasswd", $wikiName.":".$theCryptPassword ); TWiki::redirect( $query, $url ); }