Subversion Repositories PEEPS

Rev

Rev 19 | Rev 23 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 19 Rev 20
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}) ]),