This commit was generated by cvs2svn to compensate for changes in r4407,
[freeside.git] / fs_selfservice / FS-SelfService / cgi / passwd.cgi
1 #!/usr/bin/perl -Tw
2
3 use strict;
4 use Getopt::Std;
5 use FS::SelfService qw(passwd);
6 use CGI;
7 use CGI::Carp qw(fatalsToBrowser);
8
9 my $freeside_uid = scalar(getpwnam('freeside'));
10
11 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
12 $ENV{'SHELL'} = '/bin/sh';
13 $ENV{'IFS'} = " \t\n";
14 $ENV{'CDPATH'} = '';
15 $ENV{'ENV'} = '';
16 $ENV{'BASH_ENV'} = '';
17
18 die "passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
19
20 my $cgi = new CGI;
21
22 $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username";
23 my $me = $1;
24
25 $cgi->param('domain') =~ /^([^\n]{0,255}$)/ or die "Illegal domain";
26 my $domain = $1;
27
28 $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password";
29 my $old_password = $1;
30
31 $cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password";
32 my $new_password = $1;
33
34 die "New passwords don't match"
35   unless $new_password eq $cgi->param('new_password2');
36
37 my $rv = passwd(
38   'username'     => $me,
39   'domain'       => $domain,
40   'old_password' => $old_password,
41   'new_password' => $new_password,
42 );
43
44 my $error = $rv->{error};
45
46 if ($error) {
47   die $error;
48 } else {
49   print $cgi->header(), <<END;
50 <html>
51   <head>
52     <title>Password changed</title>
53   </head>
54   <body bgcolor="#e8e8e8">
55     <h3>Password changed</h3>
56 <br>Your password has been changed.
57   </body>
58 </html>
59 END
60 }