modified site user admin validation
authorTony Cook <tony@develop-help.com>
Thu, 21 Feb 2008 04:35:12 +0000 (04:35 +0000)
committertony <tony@45cb6cf1-00bc-42d2-bb5a-07f51df49f94>
Thu, 21 Feb 2008 04:35:12 +0000 (04:35 +0000)
schema/bse.sql
site/cgi-bin/modules/BSE/AdminSiteUsers.pm
site/cgi-bin/modules/BSE/CustomBase.pm
site/cgi-bin/modules/BSE/DB/Mysql.pm
site/cgi-bin/modules/SiteUser.pm
site/util/mysql.str

index d423b312adb0a1659c2edf5c7bc870fb2e703e29..cf07794a6997b513e6d1c5e6b50b1ef8205fbb0f 100644 (file)
@@ -584,6 +584,9 @@ create table site_users (
 
   billOrganization varchar(127) not null default '',
 
+  customInt1 integer,
+  customInt2 integer,
+
   primary key (id),
   unique (userId),
   index (affiliate_name)
index e04c5ebd5ee07f96a2b9ceeafa5bf0b4bf7f05db..64f4dffedae8449a186a51afcb0bf03f10f0215d 100644 (file)
@@ -300,23 +300,20 @@ sub req_save {
   my %errors;
   my $nopassword = $req->cfg->entry('site users', 'nopassword', 0);
   my @cols = grep !$donttouch{$_}, SiteUser->columns;
-  for my $col (@cols) {
+  my $custom = custom_class($cfg);
+  my @required = $custom->siteuser_edit_required($req, $user);
+  for my $col (@required) {
     my $value = $cgi->param($col);
-    if ($cfg->entryBool('site users', "require_$col")) {
-      if (defined $value && $value eq '') {
-       my $disp = $cfg->entry('site users', "display_$col", "\u$col");
-       $errors{$col} = "$disp is a required field";
-      }
+    if (defined $value && $value eq '') {
+      my $disp = $cfg->entry('site users', "display_$col", "\u$col");
+      $errors{$col} = "$disp is a required field";
     }
   }
 
   my $saveemail;
   my $email = $cgi->param('email');
-  if (defined $email && $email ne $user->{email}) {
-    if (!$email) {
-      $errors{email} = "Email is a required field";
-    }
-    elsif ($email !~ /.\@./) {
+  if (defined $email && $email ne $user->{email} && $email ne '') {
+    if ($email !~ /.\@./) {
       $errors{email} = "Email is invalid";
     }
     unless ($errors{email}) {
@@ -546,6 +543,9 @@ sub req_add {
     $user{$field} = '';
   }
 
+  my $custom = custom_class($cfg);
+  my @required = $custom->siteuser_add_required($req);
+
   my $nopassword = $cfg->entryBool('site users', 'nopassword', 0);
   my %errors;
   my $email = $cgi->param('email');
index 2534ba6178caec0c4150550235842dfb8cc222ec..f1c5014ac5336977b25eb8724bf5c393559c5d82 100644 (file)
@@ -121,6 +121,34 @@ sub can_user_see_wishlist {
   1;
 }
 
+my @dont_touch = 
+  qw(id userId password confirmed confirmSecret waitingForConfirmation flags affiliate_name previousLogon);
+my %dont_touch = map { $_ => 1 } @dont_touch;
+  
+sub siteuser_required {
+  my ($self, $req) = @_;
+
+  require SiteUsers;
+  my $cfg = $req->cfg;
+  my @required = qw(email);
+  push @required, grep $cfg->entry('site users', "require_$_", 0),
+    grep !$dont_touch{$_}, SiteUsers->columns;
+
+  return @required;
+}
+
+sub siteuser_add_required {
+  my ($self, $req) = @_;
+
+  return $self->siteuser_required($req);
+}
+
+sub siteuser_edit_required {
+  my ($self, $req, $user) = @_;
+
+  return $self->siteuser_required($req);
+}
+
 1;
 
 =head1 NAME
index e11742264dffa10c18cb33fc901272e250f34775..74699977a172b4cc01f3cc34b550618b0ae56e47 100644 (file)
@@ -181,8 +181,8 @@ SQL
    'select * from site_users where id = ?',
    getSiteUserByAffiliate_name =>
    'select * from site_users where affiliate_name = ?',
-   addSiteUser => 'insert site_users values(null,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
-   replaceSiteUser => 'replace site_users values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
+   addSiteUser => 'insert site_users values(null,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
+   replaceSiteUser => 'replace site_users values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',
    'SiteUsers.removeSubscriptions'=>
    'delete from subscribed_users where userId = ?',
    'SiteUsers.removeSub'=>
index b6d440338f8e7411d967b29b6eac0be1674d3b66..9f3fef8df360ba1f73a038919b5658f320de9f29 100644 (file)
@@ -23,7 +23,8 @@ sub columns {
             customStr1 customStr2 customStr3
             affiliate_name delivMobile billMobile
             delivStreet2 billStreet2
-            billOrganization/;
+            billOrganization
+            customInt1 customInt2/;
 }
 
 sub valid_fields {
index a831283b0d5c1bd6408f87724831ae87db54eb6b..1249ce018038ab4aabdb5606c60a0b7f40c79dea 100644 (file)
@@ -402,6 +402,8 @@ Column billMobile;varchar(80);NO;;
 Column delivStreet2;varchar(127);NO;;
 Column billStreet2;varchar(127);NO;;
 Column billOrganization;varchar(127);NO;;
+Column customInt1;int(11);YES;NULL;
+Column customInt2;int(11);YES;NULL;
 Index PRIMARY;1;[id]
 Index affiliate_name;0;[affiliate_name]
 Index userId;1;[userId]