2 # (c) Petr Baudis <pasky@suse.cz>
14 substr(crypt(rand, rand), 2);
18 my $repo = Git
::RepoCGI
->new('Forgotten Project Password');
21 my $name = $cgi->param('name');
23 unless (defined $name) {
24 print "<p>I need the project name as an argument.</p>\n";
28 if (!valid_proj_name
($name)) {
29 print "<p>Invalid project name. Go away, sorcerer.</p>\n";
33 if (!Git
::RepoCGI
::Project
::does_exist
($name)) {
34 print "<p>Sorry but this project does not exist. Now, how did you <em>get</em> here?!</p>\n";
38 if (!Git
::RepoCGI
::Project
::available
($name)) {
39 print "<p>Sorry but your project has not finished mirroring yet. If it takes inordinate amount of time, please tell the administrator.</p>\n";
43 my $proj = Git
::RepoCGI
::Project
->load($name);
44 $proj or die "not found project $name, that's really weird!";
46 my $mail = $proj->{email
};
48 if ($cgi->param('y0')) {
51 my $newpwd = genpwd
();
53 open (M
, '|-', 'mail', '-s', '[repo.or.cz] New password for project '.$name, $mail) or die "Cannot spawn mail: $!";
57 somebody asked for the password for project $name to be reset. Since you are
58 the project admin, you get to know the new password:
62 In case you did not request the password to be reset, we apologize. Nevertheless,
63 you have to use the reset password now (possibly to change it back).
65 Quick-link to the edit project page:
67 http://repo.or.cz/m/editproj.cgi?name=$name
71 close M
or die "mail $mail for $name died? $!";
73 $proj->update_password($newpwd);
75 print "<p>Project password has been reset. Have a nice day.</p>\n";
80 <p>You are trying to make me reset password for project $name. I will send the new
81 password to the project admin <$mail>.</p>
83 <input type="hidden" name="name" value="$name" />
84 <p><input type="submit" name="y0" value="Reset Password" /></p>