| Line 18... |
Line 18... |
| 18 |
$ENV{HTTPS} = 'ON' if $ENV{SERVER_NAME} =~ /^peeps/;
|
18 |
$ENV{HTTPS} = 'ON' if $ENV{SERVER_NAME} =~ /^peeps/;
|
| Line 19... |
Line 19... |
| 19 |
|
19 |
|
| 20 |
my ($FORM, $cookie_string, $ERRMSG);
|
20 |
my ($FORM, $cookie_string, $ERRMSG);
|
| 21 |
my @ERRORS;
|
21 |
my @ERRORS;
|
| 22 |
my $dbh = getDBConnection ();
|
22 |
my $dbh = getDBConnection ();
|
| 23 |
my @FIELDS = qw/ username derby_name derby_short_name email name_first name_middle name_last password active pronouns birthdate /;
|
23 |
my @FIELDS = qw/ username derby_name derby_short_name default_jersey_number email name_first name_middle name_last password active pronouns birthdate /;
|
| Line 24... |
Line 24... |
| 24 |
my @PRIVFIELDS = qw/ email active /;
|
24 |
my @PRIVFIELDS = qw/ email active /;
|
| 25 |
|
25 |
|
| Line 73... |
Line 73... |
| 73 |
$F->{username} = WebDB::trim param ('username') // '';
|
73 |
$F->{username} = WebDB::trim param ('username') // '';
|
| 74 |
$F->{email} = lc WebDB::trim param ('email') // '';
|
74 |
$F->{email} = lc WebDB::trim param ('email') // '';
|
| 75 |
$F->{password} = WebDB::trim param ('password') // '';
|
75 |
$F->{password} = WebDB::trim param ('password') // '';
|
| 76 |
$F->{derby_name} = WebDB::trim param ('derby_name') // '';
|
76 |
$F->{derby_name} = WebDB::trim param ('derby_name') // '';
|
| 77 |
$F->{derby_short_name} = WebDB::trim param ('derby_short_name') // '';
|
77 |
$F->{derby_short_name} = WebDB::trim param ('derby_short_name') // '';
|
| - |
|
78 |
$F->{default_jersey_number} = WebDB::trim param ('default_jersey_number') // '';
|
| 78 |
$F->{name_first} = WebDB::trim param ('name_first') // '';
|
79 |
$F->{name_first} = WebDB::trim param ('name_first') // '';
|
| 79 |
$F->{name_middle} = WebDB::trim param ('name_middle') // '';
|
80 |
$F->{name_middle} = WebDB::trim param ('name_middle') // '';
|
| 80 |
$F->{name_last} = WebDB::trim param ('name_last') // '';
|
81 |
$F->{name_last} = WebDB::trim param ('name_last') // '';
|
| 81 |
$F->{pronouns} = WebDB::trim param ('pronouns') // '';
|
82 |
$F->{pronouns} = WebDB::trim param ('pronouns') // '';
|
| 82 |
$F->{birthdate} = WebDB::trim param ('birthdate') // '';
|
83 |
$F->{birthdate} = WebDB::trim param ('birthdate') // '';
|
| Line 101... |
Line 102... |
| 101 |
if (!$F->{email}) { push @ERRORS, "Blank Email!"; } else {
|
102 |
if (!$F->{email}) { push @ERRORS, "Blank Email!"; } else {
|
| 102 |
$F->{email} =~ s/\s+//g; # make sure people aren't accidentally including spaces
|
103 |
$F->{email} =~ s/\s+//g; # make sure people aren't accidentally including spaces
|
| 103 |
$F->{email} = lc $F->{email}; # sometimes people capitalize their email addresses and that's annoying...
|
104 |
$F->{email} = lc $F->{email}; # sometimes people capitalize their email addresses and that's annoying...
|
| 104 |
if (! Email::Valid->address (-address => $F->{email}, -mxcheck => 1, -tldcheck => 1)) { push @ERRORS, "Mal-formatted (or fake) Email Address!"; $F->{email} = ""; }
|
105 |
if (! Email::Valid->address (-address => $F->{email}, -mxcheck => 1, -tldcheck => 1)) { push @ERRORS, "Mal-formatted (or fake) Email Address!"; $F->{email} = ""; }
|
| 105 |
}
|
106 |
}
|
| - |
|
107 |
if ($F->{default_jersey_number} and $F->{default_jersey_number} !~ /^\d{1,4}$/) { push @ERRORS, "Illegal Jersey Number! (Must be 1 to 4 digits, only.)"; }
|
| 106 |
if (checkDupes ('email', 'person', $F->{email})) { push @ERRORS, "Email Address already in use. ".$warn_recovery; $F->{email} = ""; }
|
108 |
if (checkDupes ('email', 'person', $F->{email})) { push @ERRORS, "Email Address already in use. ".$warn_recovery; $F->{email} = ""; }
|
| Line 107... |
Line 109... |
| 107 |
|
109 |
|
| 108 |
if (scalar @ERRORS) {
|
110 |
if (scalar @ERRORS) {
|
| 109 |
$ERRMSG = join $h->br, @ERRORS;
|
111 |
$ERRMSG = join $h->br, @ERRORS;
|
| 110 |
display_form ("New", "New User", $ERRMSG, $F);
|
112 |
display_form ("New", "New User", $ERRMSG, $F);
|
| 111 |
} else {
|
113 |
} else {
|
| Line 112... |
Line 114... |
| 112 |
# We have a correctly formatted email address with a mail host record, go ahead and add the user
|
114 |
# We have a correctly formatted email address with a mail host record, go ahead and add the user
|
| 113 |
|
115 |
|
| 114 |
$dbh->do ("insert into person (email, derby_name, derby_short_name, name_first, name_middle, name_last, pronouns, birthdate, created, updated) values (?, password(?), ?, ?, ?, ?, ?, ?, ?, now(), now())", undef,
|
116 |
$dbh->do ("insert into person (email, derby_name, derby_short_name, default_jersey_number, name_first, name_middle, name_last, pronouns, birthdate, created, updated) values (?, password(?), ?, ?, ?, ?, ?, ?, ?, now(), now())", undef,
|
| Line 115... |
Line 117... |
| 115 |
$F->{email}, $F->{derby_name}, $F->{derby_short_name}, $F->{name_first}, $F->{name_middle}, $F->{name_last}, $F->{pronouns}, $F->{birthdate})
|
117 |
$F->{email}, $F->{derby_name}, $F->{derby_short_name}, $F->{default_jersey_number}, $F->{name_first}, $F->{name_middle}, $F->{name_last}, $F->{pronouns}, $F->{birthdate})
|
| 116 |
or display_form ("New", "New User", "ERROR: DB: ".$dbh->errstr, $F);
|
118 |
or display_form ("New", "New User", "ERROR: DB: ".$dbh->errstr, $F);
|
| 117 |
|
119 |
|
| Line 132... |
Line 134... |
| 132 |
|
134 |
|
| Line 133... |
Line 135... |
| 133 |
my $OG = getUser ($F->{person_id});
|
135 |
my $OG = getUser ($F->{person_id});
|
| 134 |
|
136 |
|
| - |
|
137 |
# if ($F->{derby_name} ne $OG->{derby_name} and checkDupes ('derby_name', $F->{derby_name})) { push @ERRORS, "Derby Name already in use. Pick a different one."; $F->{derby_name} = ""; }
|
| - |
|
138 |
# if (!$F->{derby_name}) { push @ERRORS, "Blank Derby Name!"; }
|
| - |
|
139 |
|
| 135 |
# if ($F->{derby_name} ne $OG->{derby_name} and checkDupes ('derby_name', $F->{derby_name})) { push @ERRORS, "Derby Name already in use. Pick a different one."; $F->{derby_name} = ""; }
|
140 |
if ($F->{default_jersey_number} and $F->{default_jersey_number} !~ /^\d{1,4}$/) { push @ERRORS, "Illegal Jersey Number! (Must be 1 to 4 digits, only.)"; }
|
| 136 |
# if (!$F->{derby_name}) { push @ERRORS, "Blank Derby Name!"; }
|
141 |
|
| 137 |
if (exists $F->{newaffiliation}) {
|
142 |
if (exists $F->{newaffiliation}) {
|
| 138 |
push @ERRORS, "No League Selected." unless $F->{newaffiliation};
|
143 |
push @ERRORS, "No League Selected." unless $F->{newaffiliation};
|
| 139 |
push @ERRORS, "That's not a Member Org ID [$F->{newaffiliation}]!" if ($F->{newaffiliation} and $F->{newaffiliation} !~ /^\d+$/);
|
144 |
push @ERRORS, "That's not a Member Org ID [$F->{newaffiliation}]!" if ($F->{newaffiliation} and $F->{newaffiliation} !~ /^\d+$/);
|
| Line 254... |
Line 259... |
| 254 |
if ($ORCUSER->{person_id} eq $F->{person_id} or $ORCUSER->{access} >= PEEPS::SYSADMIN) {
|
259 |
if ($ORCUSER->{person_id} eq $F->{person_id} or $ORCUSER->{access} >= PEEPS::SYSADMIN) {
|
| 255 |
$F->{username} = $h->input ({ type=>"text", name=>"username", value=>$F->{username} });
|
260 |
$F->{username} = $h->input ({ type=>"text", name=>"username", value=>$F->{username} });
|
| 256 |
$F->{password} = $h->input ({ type=>"password", name=>"password" });
|
261 |
$F->{password} = $h->input ({ type=>"password", name=>"password" });
|
| 257 |
$F->{derby_name} = $h->input ({ type=>"text", name=>"derby_name", value=>$F->{derby_name} });
|
262 |
$F->{derby_name} = $h->input ({ type=>"text", name=>"derby_name", value=>$F->{derby_name} });
|
| 258 |
$F->{derby_short_name} = $h->input ({ type=>"text", name=>"derby_short_name", value=>$F->{derby_short_name} });
|
263 |
$F->{derby_short_name} = $h->input ({ type=>"text", name=>"derby_short_name", value=>$F->{derby_short_name} });
|
| - |
|
264 |
$F->{default_jersey_number} = $h->input ({ type=>"text", name=>"default_jersey_number", value=>$F->{default_jersey_number} });
|
| 259 |
$F->{name_first} = $h->input ({ type=>"text", name=>"name_first", value=>$F->{name_first} });
|
265 |
$F->{name_first} = $h->input ({ type=>"text", name=>"name_first", value=>$F->{name_first} });
|
| 260 |
$F->{name_middle} = $h->input ({ type=>"text", name=>"name_middle", value=>$F->{name_middle} });
|
266 |
$F->{name_middle} = $h->input ({ type=>"text", name=>"name_middle", value=>$F->{name_middle} });
|
| 261 |
$F->{name_last} = $h->input ({ type=>"text", name=>"name_last", value=>$F->{name_last} });
|
267 |
$F->{name_last} = $h->input ({ type=>"text", name=>"name_last", value=>$F->{name_last} });
|
| 262 |
$F->{pronouns} = $h->input ({ type=>"text", name=>"pronouns", value=>$F->{pronouns} });
|
268 |
$F->{pronouns} = $h->input ({ type=>"text", name=>"pronouns", value=>$F->{pronouns} });
|
| 263 |
$F->{birthdate} = $h->input ({ type=>"date", name=>"birthdate", value=>$F->{birthdate} });
|
269 |
$F->{birthdate} = $h->input ({ type=>"date", name=>"birthdate", value=>$F->{birthdate} });
|
| Line 279... |
Line 285... |
| 279 |
$F->{username} = $h->input ({ type=>"text", name=>"username", value=>$F->{username} });
|
285 |
$F->{username} = $h->input ({ type=>"text", name=>"username", value=>$F->{username} });
|
| 280 |
$F->{email} = $h->input ({ type=>"text", name=>"email", value=>$F->{email} });
|
286 |
$F->{email} = $h->input ({ type=>"text", name=>"email", value=>$F->{email} });
|
| 281 |
$F->{password} = $h->input ({ type=>"password", name=>"password" });
|
287 |
$F->{password} = $h->input ({ type=>"password", name=>"password" });
|
| 282 |
$F->{derby_name} = $h->input ({ type=>"text", name=>"derby_name", value=>$F->{derby_name} });
|
288 |
$F->{derby_name} = $h->input ({ type=>"text", name=>"derby_name", value=>$F->{derby_name} });
|
| 283 |
$F->{derby_short_name} = $h->input ({ type=>"text", name=>"derby_short_name", value=>$F->{derby_short_name} });
|
289 |
$F->{derby_short_name} = $h->input ({ type=>"text", name=>"derby_short_name", value=>$F->{derby_short_name} });
|
| - |
|
290 |
$F->{default_jersey_number} = $h->input ({ type=>"text", name=>"default_jersey_number", value=>$F->{default_jersey_number} });
|
| 284 |
$F->{name_first} = $h->input ({ type=>"text", name=>"name_first", value=>$F->{name_first} });
|
291 |
$F->{name_first} = $h->input ({ type=>"text", name=>"name_first", value=>$F->{name_first} });
|
| 285 |
$F->{name_middle} = $h->input ({ type=>"text", name=>"name_middle", value=>$F->{name_middle} });
|
292 |
$F->{name_middle} = $h->input ({ type=>"text", name=>"name_middle", value=>$F->{name_middle} });
|
| 286 |
$F->{name_last} = $h->input ({ type=>"text", name=>"name_last", value=>$F->{name_last} });
|
293 |
$F->{name_last} = $h->input ({ type=>"text", name=>"name_last", value=>$F->{name_last} });
|
| 287 |
$F->{pronouns} = $h->input ({ type=>"text", name=>"pronouns", value=>$F->{pronouns} });
|
294 |
$F->{pronouns} = $h->input ({ type=>"text", name=>"pronouns", value=>$F->{pronouns} });
|
| 288 |
$F->{birthdate} = $h->input ({ type=>"date", name=>"birthdate", value=>$F->{birthdate} });
|
295 |
$F->{birthdate} = $h->input ({ type=>"date", name=>"birthdate", value=>$F->{birthdate} });
|
| Line 319... |
Line 326... |
| 319 |
$person_id = "";
|
326 |
$person_id = "";
|
| 320 |
$F->{email} = " ";
|
327 |
$F->{email} = " ";
|
| 321 |
$F->{password} = " ";
|
328 |
$F->{password} = " ";
|
| 322 |
$F->{derby_name} = " ";
|
329 |
$F->{derby_name} = " ";
|
| 323 |
$F->{derby_short_name} = " ";
|
330 |
$F->{derby_short_name} = " ";
|
| - |
|
331 |
$F->{default_jersey_number} = " ";
|
| 324 |
$F->{name_first} = " ";
|
332 |
$F->{name_first} = " ";
|
| 325 |
$F->{name_middle} = " ";
|
333 |
$F->{name_middle} = " ";
|
| 326 |
$F->{name_last} = " ";
|
334 |
$F->{name_last} = " ";
|
| 327 |
$F->{pronouns} = " ";
|
335 |
$F->{pronouns} = " ";
|
| 328 |
$F->{birthdate} = " ";
|
336 |
$F->{birthdate} = " ";
|
| Line 359... |
Line 367... |
| 359 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Username: ", $F->{username}) ]),
|
367 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Username: ", $F->{username}) ]),
|
| 360 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Email: ", $F->{email}) ]),
|
368 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Email: ", $F->{email}) ]),
|
| 361 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Password: ", $F->{password}) ]),
|
369 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Password: ", $F->{password}) ]),
|
| 362 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Derby Name: ", $F->{derby_name}) ]),
|
370 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Derby Name: ", $F->{derby_name}) ]),
|
| 363 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Derby Short Name: ", $F->{derby_short_name}) ]),
|
371 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Derby Short Name: ", $F->{derby_short_name}) ]),
|
| - |
|
372 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Default Jersey Number: ", $F->{default_jersey_number}) ]),
|
| 364 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "First Name: ", $F->{name_first}) ]),
|
373 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "First Name: ", $F->{name_first}) ]),
|
| 365 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Middle Name: ", $F->{name_middle}) ]),
|
374 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Middle Name: ", $F->{name_middle}) ]),
|
| 366 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Last Name: ", $F->{name_last}) ]),
|
375 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Last Name: ", $F->{name_last}) ]),
|
| 367 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Pronouns: ", $F->{pronouns}) ]),
|
376 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Pronouns: ", $F->{pronouns}) ]),
|
| 368 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Birthdate: ", $F->{birthdate}) ]),
|
377 |
$h->div ({ class=>"rTableRow" },[ $h->div ({ class=>"rTableCellr", style=>"font-size: unset;" }, "Birthdate: ", $F->{birthdate}) ]),
|