Initial add of defaria.com
[clearscm.git] / defaria.com / cvsadm / adduser.cgi
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         cvsadm/adduser.cgi
5 # Description:  Provides the add user screen
6 # Author:       Andrew@DeFaria.com
7 # Created:      Thu Jul  7 16:54:07 PDT 2005
8 # Modified:
9 # Language:     Perl
10 #
11 # (c) Copyright 2005, Andrew@DeFaria.com, all rights reserved.
12 #
13 ################################################################################
14 use strict;
15 use warnings;
16
17 use CGI qw (:standard *table start_Tr end_Tr start_td end_td start_div end_div);
18 use CGI::Carp "fatalsToBrowser";
19 use CVSAdm;
20
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 $euid        = cookie "CVSAdmUser";
26 my $password    = param "password";
27
28 sub StartForm {
29   my $action    = shift;
30   my $onSubmit  = shift;
31
32   if (defined $onSubmit) {
33     print start_form {
34       -action   => $action,
35       -onSubmit => $onSubmit
36     };
37   } else {
38     print start_form {
39       -action   => $action
40     };
41   } # if
42
43   print hidden {
44     -name       => "cvs_server",
45     -value      => $cvs_server
46   };
47   print hidden {
48     -name       => "repository",
49     -value      => $repository
50   };
51   print hidden {
52     -name       => "userid",
53     -value      => $userid
54   };
55
56 } # StartForm
57
58 sub Body {
59   print "<center>";
60   StartForm "admin.cgi";
61   print submit {
62     -name       => "Admin"
63   };
64   print end_form;
65   print "</center>";
66
67   print start_table {
68     -align              => "center",
69     -bgcolor            => "white",
70     -border             => 0,
71     -cellspacing        => 0,
72     -cellpadding        => 2,
73     -width              => "50%"};
74
75   StartForm  "add.cgi", "return validate_user (this);";
76
77   my @sysusers          = SystemUsers $cvs_server, $repository;
78   my $system_users      = popup_menu {-name     => "sysusers",
79                                       -values   => \@sysusers,
80                                       -class    => "inputfield"};
81   print Tr [
82     td {-valign         => "middle",
83         -class          => "label"},
84       "Username:",
85     td {-colspan        => 2,
86         -valign         => "middle"},
87       textfield {-class => "inputfield",
88                  -size  => 15,
89                  -name  => "username"}
90   ];
91   print Tr [
92     td {-valign         => "middle",
93         -class          => "label"},
94       "System User:",
95     td {-colspan        => 2,
96         -valign         => "middle"},
97       $system_users
98   ];
99   print Tr [
100     td {-valign         => "middle",
101         -class          => "label"},
102       "Password:",
103     td {-colspan        => 2,
104         -valign         => "middle"},
105       password_field {-class    => "inputfield",
106                       -size     => 15,
107                       -name     => "password"}
108   ];
109
110   print Tr [
111     td {-valign         => "middle",
112         -class          => "label"},
113       "Fullname:",
114     td {-colspan        => 2,
115         -valign         => "middle"},
116       textfield {-class => "inputfield",
117                  -size  => 40,
118                  -name  => "fullname"}
119   ];
120   print Tr [
121     td {-valign         => "middle",
122         -class          => "label"},
123       "Email:",
124     td {-colspan        => 2,
125         -valign         => "middle"},
126       textfield {-class => "inputfield",
127                  -size  => 40,
128                  -name  => "email"}
129   ];
130
131   my @groups = Groups $cvs_server, $repository;
132   my $groups;
133
134   foreach (@groups) {
135     my $checkbox_str;
136     $checkbox_str = checkbox {
137       -name     => $_
138     };
139     $groups .= $checkbox_str . "<br>";
140   } # foreach
141
142   print Tr [
143     td {-valign         => "middle",
144         -class          => "label"},
145       "Groups:",
146     td {-colspan        => 2,
147         -valign         => "middle"},
148       $groups
149   ];
150
151   my $reader = checkbox {-name  => "${repository}_reader",
152                          -label => "Read access"};
153   my $writer = checkbox {-name  => "${repository}_writer",
154                          -label => "Write access"};
155
156   print Tr [
157     td {-valign => "middle",
158         -class  => "label"},
159       $repository,
160     td {-align  => "left",
161         -width  => 200,
162         -valign => "middle"},
163       $reader,
164     td {-align  => "left",
165         -width  => 200,
166         -valign => "middle"},
167       $writer
168   ];
169
170   print start_Tr;
171   print start_td {
172     -colspan    => 2,
173     -align      => "center"
174   };
175   print submit {
176     -name       => "action",
177     -value      => "Add User"
178   };
179   print end_form;
180   print end_td;
181
182   StartForm "login.cgi";
183   print start_td;
184   print hidden {
185     -name       => "logout",
186     -value      => "yes"
187   };
188   print submit {
189     -name       => "Logout"
190   };
191   print end_form;
192   print end_td;
193   print end_table;
194 } # Body
195
196 $userid = Heading (
197                    "getcookie",
198                    $userid,
199                    "CVSAdm:$Cvs_server:$repository: Add User",
200                    "CVS Administration for $Cvs_server:$repository",
201                    "Add New User"
202                   );
203
204 if (!IsAdmin ($cvs_server, $repository, $userid)) {
205   DisplayError "You are not authorized to add users";
206 } # if
207
208 Body;
209 Footing;
210
211 exit;