2 ################################################################################
4 # File: cvsadm/edituser.cgi
5 # Description: Provides the edit user screen for cvsadm
6 # Author: Andrew@DeFaria.com
7 # Created: Thu Jul 7 16:54:07 PDT 2005
11 # (c) Copyright 2005, Andrew@DeFaria.com, all rights reserved.
13 ################################################################################
17 use CGI qw (:standard *table start_Tr end_Tr start_td end_td start_div end_div);
18 use CGI::Carp "fatalsToBrowser";
21 my $cvs_server = param "cvs_server";
22 my $repository = param "repository";
23 my $Cvs_server = ucfirst $cvs_server;
24 my $userid = param "userid";
25 my $password = param "password";
27 my $euid = cookie "CVSAdmUser";
32 $is_cvsadm = IsAdmin $cvs_server, $repository, $euid;
35 $is_cvsadm = IsAdmin $cvs_server, $repository, $userid;
40 my %passwd_entry = PasswdEntry $cvs_server, $repository, $userid;
45 -action => "admin.cgi"
48 -name => "cvs_server",
52 -name => "repository",
75 -action => "modifyuser.cgi",
76 -onSubmit => "return validate_user (this);"
79 -name => "cvs_server",
83 -name => "repository",
88 my @sysusers = SystemUsers $cvs_server, $repository;
89 my $system_user = SystemUser $cvs_server, $repository, $userid;
90 my $system_users = popup_menu {-name => "sysusers",
91 -values => \@sysusers,
92 -class => "inputfield",
93 -default => $system_user};
95 td {-valign => "middle",
101 hidden {-name => "userid",
105 td {-valign => "middle",
109 -valign => "middle"},
114 td {-valign => "middle",
118 -valign => "middle"},
119 $userid . " (" . $passwd_entry {system_user} . ")",
120 hidden {-name => "userid",
127 td {-valign => "middle",
131 -valign => "middle"},
132 password_field {-class => "inputfield",
134 -name => "old_password"}
139 td {-valign => "middle",
143 -valign => "middle"},
144 password_field {-class => "inputfield",
146 -name => "new_password"}
150 td {-valign => "middle",
154 -valign => "middle"},
155 password_field {-class => "inputfield",
157 -name => "repeated_password"}
161 td {-valign => "middle",
165 -valign => "middle"},
166 textfield {-class => "inputfield",
169 -value => $passwd_entry {fullname}}
172 td {-valign => "middle",
176 -valign => "middle"},
177 textfield {-class => "inputfield",
180 -value => $passwd_entry {email}}
183 my @groups = Groups $cvs_server, $repository;
187 my $in_group = UserInGroup $cvs_server, $repository, $userid, $_;
190 $checkbox_str = checkbox {-name => $_,
191 -checked => $in_group};
193 $checkbox_str = checkbox {-name => $_ . "_readonly",
194 -checked => $in_group,
197 print hidden {-name => $_,
198 -value => "on"} if $in_group;
200 $groups .= $checkbox_str . "<br>";
204 td {-valign => "middle",
208 -valign => "middle"},
215 if (IsReader $cvs_server, $repository, $userid) {
217 $reader = checkbox {-name => "${repository}_reader",
218 -label => "Read access",
221 $reader = checkbox {-name => "${repository}_reader_readonly",
222 -label => "Read access",
225 print hidden {-name => "${repository}_reader",
230 $reader = checkbox {-name => "${repository}_reader",
231 -label => "Read access"};
233 $reader = checkbox {-name => "${repository}_reader_readonly",
234 -label => "Read access",
236 print hidden {-name => "${repository}_reader",
241 if (IsWriter $cvs_server, $repository, $userid) {
243 $writer = checkbox {-name => "${repository}_writer",
244 -label => "Write access",
247 $writer = checkbox {-name => "${repository}_writer_readonly",
248 -label => "Write access",
251 print hidden {-name => "${repository}_writer",
256 $writer = checkbox {-name => "${repository}_writer",
257 -label => "Write access"};
259 $writer = checkbox {-name => "${repository}_writer_readonly",
260 -label => "Write access",
262 print hidden {-name => "${repository}_writer",
268 td {-valign => "middle",
271 td {-align => "left",
273 -valign => "middle"},
275 td {-align => "left",
277 -valign => "middle"},
292 -action => "login.cgi"
295 -name => "cvs_server",
296 -value => $cvs_server
299 -name => "repository",
300 -value => $repository
317 if ($is_cvsadm and $needs_login eq "no") {
318 # Editing other user as cvsadm
321 defined $euid ? $euid : $userid,
322 "CVSAdm:$Cvs_server:$repository: Edit User",
323 "CVS Administration for $Cvs_server:$repository",
328 $result = CVSAdm::Login $cvs_server, $repository, $userid, $password;
332 print redirect "login.cgi?cvs_server=$cvs_server&repository=$repository&errormsg=Please specify a username";
335 print redirect "login.cgi?cvs_server=$cvs_server&repository=$repository&errormsg=No such user $userid";
338 } elsif ($result == 2) {
339 print redirect "login.cgi?cvs_server=$cvs_server&repository=$repository&errormsg=Invalid password";
342 $action = "setcookie";
347 "CVSAdm:$Cvs_server:$repository: Edit User",
348 "CVS Administration for $Cvs_server:$repository",