ade2b2139ea115131c9155c25d65769dc6036c11
[clearscm.git] / maps / bin / updateprofile.cgi
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         $RCSfile: updateprofile.cgi,v $
5 # Revision:     $Revision: 1.1 $
6 # Description:  Update the users profile
7 # Author:       Andrew@DeFaria.com
8 # Created:      Mon Jan 16 20:25:32 PST 2006
9 # Modified:     $Date: 2013/06/12 14:05:47 $
10 # Language:     perl
11 #
12 # (c) Copyright 2000-2006, Andrew@DeFaria.com, all rights reserved.
13 #
14 ################################################################################
15 use strict;
16 use warnings;
17
18 use FindBin;
19
20 local $0 = $FindBin::Script;
21
22 use lib "$FindBin::Bin/../lib";
23
24 use MAPS;
25 use MAPSWeb;
26
27 use CGI qw (:standard);
28
29 my ($userid, $Userid);
30 my $name              = param 'fullname';
31 my $email             = param 'email';
32 my $old_password      = param 'old_password';
33 my $new_password      = param 'new_password';
34 my $repeated_password = param 'repeated_password';
35 my $mapspop           = param 'MAPSPOP';
36 my $history           = param 'history';
37 my $days              = param 'days';
38 my $dates             = param 'dates';
39 my $tag_and_forward   = param 'tag_and_forward';
40
41 sub Body {
42   my %options = (
43     MAPSPOP       => $mapspop,
44     History       => $history,
45     Page          => $days,
46     Dates         => $dates,
47     'Tag&Forward' => $tag_and_forward,
48   );
49
50   if ($old_password) {
51     my $dbpassword             = UserExists($userid);
52     my $encrypted_old_password = Encrypt($old_password, $userid);
53
54     if ($dbpassword ne $encrypted_old_password) {
55       DisplayError 'Your old password was not correct!';
56     } # if
57   } # if
58
59   if ($new_password) {
60     unless ($old_password) {
61       DisplayError "You must provide your old password in order to change it";
62     } else {
63       if ($repeated_password ne $new_password) {
64         DisplayError "Your new password does not match your repeat password";
65       } else {
66         $new_password = Encrypt($new_password, $userid);
67       } # if
68     } # unless
69   } # if
70
71   if (UpdateUser(
72     userid   => $userid,
73     name     => $name,
74     email    => $email,
75     password => $new_password,
76   ) != 0) {
77     DisplayError "Unable to update user record for user $userid";
78   } # if
79
80   if (UpdateUserOptions($userid, %options) != 0) {
81     DisplayError "Unable to update user options for user $userid";
82   } # if
83
84   print h2 {-class => 'header',
85             -align => 'center'},
86     "${Userid}'s profile has been updated";
87
88   return;
89 } # Body
90
91 $userid = Heading (
92   'getcookie',
93   '',
94   'Update Profile',
95   "Update user's profile",
96 );
97
98 $userid //= $ENV{USER};
99
100 $Userid = ucfirst $userid;
101
102 SetContext($userid);
103 NavigationBar($userid);
104
105 Body;
106
107 Footing;
108
109 exit;