/**
  * Validate the user name and password
  */
 private function loginUser()
 {
     $u = new UsersDb();
     $user = $u->getUserByName($this->nickName);
     $user = array_pop($user);
     if ($user === false) {
         header($_SERVER["SERVER_PROTOCOL"] . " 400 Failed");
         print 'User name not registered';
         return false;
     }
     // One-way encrypt the password
     $this->password = crypt($this->password, $_SERVER['ENCRYPTION_KEY']);
     if ($this->password != $user['password']) {
         header($_SERVER["SERVER_PROTOCOL"] . " 400 Failed");
         print 'Login failed';
         return false;
     }
     $this->id = $user['id'];
     $this->firstName = $user['firstName'];
     $this->lastName = $user['lastName'];
     return true;
 }
 /**
  * Add a new user to the database
  */
 private function addUser()
 {
     $u = new UsersDb();
     if ($u->getUserByName($this->nickName) !== false) {
         header($_SERVER["SERVER_PROTOCOL"] . " 400 Failed");
         print 'Duplicate user name';
         return false;
     }
     if ($u->getUserByEmail($this->email) !== false) {
         header($_SERVER["SERVER_PROTOCOL"] . " 400 Failed");
         print 'Duplicate email';
         return false;
     }
     // One-way encrypt the password
     $this->password = crypt($this->password, $_SERVER['ENCRYPTION_KEY']);
     // Note: There is a very small race condition if two people
     // simultaneously try to register the name name or email, but if
     // that happens the only result is a less specific error message
     // for the loser.
     $this->id = $u->addUser($this->nickName, $this->password, $this->email, $this->firstName, $this->lastName, $this->uid);
     if ($this->id === false) {
         header($_SERVER["SERVER_PROTOCOL"] . " 400 Failed");
         print 'Registration failed';
         return false;
     }
     return true;
 }