Changeset 25 for trunk/DNSDB.pm


Ignore:
Timestamp:
11/02/09 16:40:07 (15 years ago)
Author:
Kris Deugau
Message:

/trunk

checkpoint

  • pass all entered data through to addUser()
  • copy-munge "delete user" segment
  • fill out missing addUser internals
  • fill out delUser stub
  • add userFullName
  • misc tweaks and normalizations
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DNSDB.pm

    r24 r25  
    2626        &addDomain &delDomain &domainName
    2727        &addGroup &delGroup &getChildren &groupName
    28         &addUser &delUser
     28        &addUser &delUser &userFullName
    2929        &getSOA &getRecLine &getDomRecs
    3030        &addRec &updateRec &delRec
     
    3838                &addDomain &delDomain &domainName
    3939                &addGroup &delGroup &getChildren &groupName
    40                 &addUser &delUser
     40                &addUser &delUser &userFullName
    4141                &getSOA &getRecLine &getDomRecs
    4242                &addRec &updateRec &delRec
     
    442442  my $pass = shift;
    443443  return ('FAIL',"Missing password") if !defined($pass);
    444 
    445444  my $state = shift;
    446445  return ('FAIL',"Need account status") if !defined($state);
    447   my $fname = shift || '';
     446
     447  my $type = shift || 'u';      # create limited users by default - fwiw, not sure yet how this will interact with ACLs
     448 
     449  my $fname = shift || $username;
    448450  my $lname = shift || '';
     451  my $phone = shift || '';      # not going format-check
    449452
    450453  my $user_id;
     
    458461  eval {
    459462    # insert the user...
    460     my $sth = $dbh->prepare("INSERT INTO users (email,group_id,password,status) VALUES (?,?,?,?)");
    461     $sth->execute($username,$group,$pass,$state);
    462 die "user fail\n";
     463    my $sth = $dbh->prepare("INSERT INTO users (group_id,username,password,firstname,lastname,phone,type,status) ".
     464        "VALUES (?,?,?,?,?,?,?,?)");
     465    $sth->execute($group,$username,$pass,$fname,$lname,$phone,$type,$state);
    463466
    464467    # get the ID...
     
    466469    $sth->execute($username);
    467470    ($user_id) = $sth->fetchrow_array();
     471
     472##fixme: add another table to hold name/email for log table?
    468473
    469474    # once we get here, we should have suceeded.
     
    484489#
    485490sub delUser {
     491  my $dbh = shift;
     492  return ('FAIL',"Need database handle") if !$dbh;
     493  my $userid = shift;
     494  return ('FAIL',"Missing userid") if !defined($userid);
     495
     496  my $sth = $dbh->prepare("delete from users where user_id=?");
     497  $sth->execute($userid);
     498
     499  return ('FAIL',"Couldn't remove user: ".$sth->errstr) if $sth->err;
     500
     501  return ('OK','OK');
     502
    486503} # end delUser
     504
     505
     506## DNSDB::userFullName()
     507# Return a pretty string!
     508# Takes a user_id and optional printf-ish string to indicate which pieces where:
     509# %u for the username
     510# %f for the first name
     511# %l for the last name
     512# All other text in the passed string will be left as-is.
     513##fixme:  need a "smart" option too, so that missing/null/blank first/last names don't give funky output
     514sub userFullName {
     515  $errstr = '';
     516  my $dbh = shift;
     517  my $userid = shift;
     518  my $fullformat = shift || '%f %l (%u)';
     519  my $sth = $dbh->prepare("select username,firstname,lastname from users where user_id=?");
     520  $sth->execute($userid);
     521  my ($uname,$fname,$lname) = $sth->fetchrow_array();
     522  $errstr = $DBI::errstr if !$uname;
     523
     524  $fullformat =~ s/\%u/$uname/g;
     525  $fullformat =~ s/\%f/$fname/g;
     526  $fullformat =~ s/\%l/$lname/g;
     527
     528  return $fullformat;
     529} # end userFullName
    487530
    488531
Note: See TracChangeset for help on using the changeset viewer.