Changeset 83 for trunk/DNSDB.pm


Ignore:
Timestamp:
02/25/11 17:56:25 (13 years ago)
Author:
Kris Deugau
Message:

/trunk

Checkpoint; partial completion of user editing.

  • general user metadata, username, and password can be changed
  • permissions need to be clarified. Also affects group permission editing to some degree.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DNSDB.pm

    r78 r83  
    3030        &addDomain &delDomain &domainName
    3131        &addGroup &delGroup &getChildren &groupName
    32         &addUser &delUser &userFullName &userStatus
     32        &addUser &updateUser &delUser &userFullName &userStatus &getUserData
    3333        &getSOA &getRecLine &getDomRecs
    3434        &addRec &updateRec &delRec
     
    4545                &addDomain &delDomain &domainName
    4646                &addGroup &delGroup &getChildren &groupName
    47                 &addUser &delUser &userFullName &userStatus
     47                &addUser &updateUser &delUser &userFullName &userStatus &getUserData
    4848                &getSOA &getRecLine &getDomRecs
    4949                &addRec &updateRec &delRec
     
    753753
    754754
     755## DNSDB:: updateUser()
     756#
     757sub updateUser {
     758  my $dbh = shift;
     759  my $uid = shift;
     760  my $username = shift;
     761  my $group = shift;
     762  my $pass = shift;
     763  my $state = shift;
     764  my $type = shift;
     765  my $fname = shift || $username;
     766  my $lname = shift || '';
     767  my $phone = shift || '';      # not going format-check
     768
     769  my $failmsg = '';
     770
     771  # Allow transactions, and raise an exception on errors so we can catch it later.
     772  # Use local to make sure these get "reset" properly on exiting this block
     773  local $dbh->{AutoCommit} = 0;
     774  local $dbh->{RaiseError} = 1;
     775
     776  my $sth;
     777
     778  # Password can be left blank;  if so we assume there's one on file.
     779  # Actual blank passwords are bad, mm'kay?
     780  if (!$pass) {
     781    $sth = $dbh->prepare("SELECT password FROM users WHERE user_id=?");
     782    $sth->execute($uid);
     783    ($pass) = $sth->fetchrow_array;
     784  } else {
     785    $pass = unix_md5_crypt($pass);
     786  }
     787
     788  eval {
     789    my $sth = $dbh->prepare(q(
     790        UPDATE users
     791        SET username=?, password=?, firstname=?, lastname=?, phone=?, type=?, status=?
     792        WHERE user_id=?
     793        )
     794      );
     795    $sth->execute($username, $pass, $fname, $lname, $phone, $type, $state, $uid);
     796    $dbh->commit;
     797  };
     798  if ($@) {
     799    my $msg = $@;
     800    eval { $dbh->rollback; };
     801    return ('FAIL',"$failmsg: $msg");
     802  } else {
     803    return ('OK','OK');
     804  }
     805} # end updateUser()
     806
     807
    755808## DNSDB::delUser()
    756809#
     
    826879  return $status;
    827880} # end userStatus()
     881
     882
     883## DNSDB::getUserData()
     884# Get misc user data for display
     885sub getUserData {
     886  my $dbh = shift;
     887  my $uid = shift;
     888
     889  my $sth = $dbh->prepare("SELECT group_id,username,firstname,lastname,phone,type,status,inherit_perm ".
     890        "FROM users WHERE user_id=?");
     891  $sth->execute($uid);
     892  return $sth->fetchrow_hashref();
     893
     894} # end getUserData()
    828895
    829896
Note: See TracChangeset for help on using the changeset viewer.