Beispiel #1
0
 /**
  * Insert the changes on a user into the database
  * @author  Clemens John <*****@*****.**>
  * @param $user_id
  * @param $changepassword
  * @param $permission
  * @param $oldpassword
  * @param $newpassword
  * @param $newpasswordchk
  * @param $openid
  * @param $vorname
  * @param $nachname
  * @param $strasse
  * @param $plz
  * @param $ort
  * @param $telefon
  * @param $email
  * @param $jabber
  * @param $icq
  * @param $website
  * @param $about
  * @param $notification_method
  * @return boolean if the user was edited successfull
  */
 public function userInsertEdit($user_id, $changepassword, $permission, $oldpassword, $newpassword, $newpasswordchk, $openid, $vorname, $nachname, $strasse, $plz, $ort, $telefon, $email, $jabber, $icq, $website, $about, $notification_method)
 {
     $user_data = User_old::getUserByID($user_id);
     $message = array();
     //check weatcher the given data is valid
     $phpass = new PasswordHash(8, false);
     if ($changepassword and !$phpass->CheckPassword($oldpassword, $user_data['password'])) {
         $message[] = array("Dein altes Passwort ist nicht richtig.", 2);
     } elseif ($changepassword and empty($newpassword)) {
         $message[] = array("Du musst ein neues Passwort angeben.", 2);
     } elseif ($changepassword and $newpassword != $newpasswordchk) {
         $message[] = array("Deine beiden neuen Passwörter stimmen nicht überein.", 2);
     } elseif (empty($email)) {
         $message[] = array("Du musst eine Emailadresse angeben.", 2);
     } elseif (!User_old::isUniqueEmail($email, $user_id)) {
         $message[] = array("Es existiert bereits ein Benutzer mit der ausgewhälten Emailadresse <i>{$email}</i>.", 2);
     } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $message[] = array("Die ausgewählte Emailadresse " . $email . " ist keine gültige Emailadresse.", 2);
     } elseif (!empty($jabber) and !filter_var($jabber, FILTER_VALIDATE_EMAIL)) {
         $message[] = array("Die ausgewählte Jabberadresse " . $jabber . " ist keine gültige Jabberadresse.", 2);
     } elseif (!empty($openid) and !User_old::isUniqueOpenID($openid, $user_id)) {
         $message[] = array("Die ausgewählte OpenID <i>" . $openid . "</i> ist bereits mit einem Benutzer verknüpft.", 2);
     }
     //if the user data is not valid, return false
     if (count($message) > 0) {
         Message::setMessage($message);
         return false;
     }
     //if user wants to set a new password, encrypt new password
     if ($changepassword) {
         $newpassword = $phpass->HashPassword($newpassword);
         if (strlen($newpassword) < 20) {
             $message[] = array("Beim Hashen des neuen Passworts trat ein Fehler auf.", 2);
             Message::setMessage($message);
             return false;
         }
     } else {
         $newpassword = $user_data['password'];
     }
     if (!$permission) {
         $newpermission = $user_data['permission'];
     } else {
         $newpermission = 0;
         foreach ($permission as $dual) {
             $newpermission += $dual;
         }
     }
     //if all checks are okay, update the data into the database
     $stmt = DB::getInstance()->prepare("UPDATE users SET \n\t\t\t\t\t\t\t   permission = ?, password = ?, openid = ?, vorname = ?, nachname = ?,\n\t\t\t\t\t\t\t   strasse = ?, plz = ?, ort = ?, telefon = ?, email = ?, jabber = ?,\n\t\t\t\t\t\t\t   icq = ?, website = ?, about = ?, notification_method = ?\n\t\t\t\t\t\t    WHERE id = ?");
     $stmt->execute(array($newpermission, $newpassword, $openid, $vorname, $nachname, $strasse, $plz, $ort, $telefon, $email, $jabber, $icq, $website, $about, $notification_method, $user_id));
     $message[] = array("Die Daten von {$user_data['nickname']} wurden geändert", 1);
     message::setMessage($message);
     return true;
 }
Beispiel #2
0
 /**
  * Create a new user
  * @author  Clemens John <*****@*****.**>
  * @param $nickname nickname of the user
  * @param $password plain text password of the user
  * @param $passwordchk plain text password doublecheck
  * @param $email emailaddress of the user
  * @param $agb has the user accepted the agb (is only beeing checked if the agb is enabled)?
  * @param $openid openid if the user wants to register by openid
  * @return boolean true if the was created successfull
  */
 public function insertNewUser($nickname, $password, $passwordchk, $email, $agb, $openid)
 {
     $message = array();
     //check weatcher the given data is valid
     if (empty($nickname)) {
         $message[] = array("Du musst einen Nickname angeben.", 2);
     } elseif (!User_old::isUniqueNickname($nickname)) {
         $message[] = array("Der ausgewählte Nickname <i>{$nickname}</i> existiert bereits.", 2);
     } elseif (empty($password)) {
         $message[] = array("Du musst ein Passwort angeben.", 2);
     } elseif ($password != $passwordchk) {
         $message[] = array("Deine beiden Passwörter stimmen nicht überein.", 2);
     } elseif (strlen($password) > 72) {
         $message[] = array("Dein Passwort darf nicht länger als 72 Zeichen sein.", 2);
     } elseif (empty($email)) {
         $message[] = array("Du musst eine Emailadresse angeben.", 2);
     } elseif (!User_old::isUniqueEmail($email)) {
         $message[] = array("Es existiert bereits ein Benutzer mit der ausgewhälten Emailadresse <i>{$email}</i>.", 2);
     } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $message[] = array("Die ausgewählte Emailadresse " . $email . " ist keine gültige Emailadresse.", 2);
     } elseif (!empty($openid) and !User_old::isUniqueOpenID($openid)) {
         $message[] = array("Die ausgewählte OpenID <i>" . $openid . "</i> ist bereits mit einem Benutzer verknüpft.", 2);
     } elseif (ConfigLine::configByName('enable_network_policy') == "true" and !$agb) {
         $message[] = array("Du musst die Netzwerkpolicy akzeptieren.", 2);
     } elseif (!preg_match('/^([a-zA-Z0-9_\\.-])+$/i', $nickname)) {
         $message[] = array("Dein Nickname enthält nicht erlaubte Zeichen (erlaubt sind Buchstaben, Ziffern, Unterstrich, Minus und Punkt).", 2);
     }
     if (count($message) > 0) {
         Message::setMessage($message);
         return false;
     } else {
         //the first user that registers will get root access
         try {
             $stmt = DB::getInstance()->prepare("SELECT * FROM users");
             $stmt->execute();
             if (!$stmt->rowCount()) {
                 $permission = 120;
             } else {
                 $permission = 8;
             }
         } catch (PDOException $e) {
             echo $e->getMessage();
         }
         //hash password to store in db
         $phpass = new PasswordHash(8, false);
         $password_hash = $phpass->HashPassword($password);
         if (strlen($password_hash) < 20) {
             $message[] = array("Beim Hashen des Passworts trat ein Fehler auf.", 2);
             Message::setMessage($message);
             return false;
         }
         //create acivation hash
         $activation = Helper::randomPassword(8);
         do {
             $api_key = Helper::randomPassword(32);
             $is_unique_api_key = User_old::isUniqueApiKey($api_key);
         } while (!$is_unique_api_key);
         echo $api_key;
         if (empty($openid)) {
             $openid = "";
         }
         try {
             $stmt = DB::getInstance()->prepare("INSERT INTO users (nickname, password, openid, api_key, email, notification_method, permission, create_date, activated) VALUES (?, ?, ?, ?, ?, 'email', ?, NOW(), ?)");
             $stmt->execute(array($nickname, $password_hash, $openid, $api_key, $email, $permission, $activation));
             $user_id = DB::getInstance()->lastInsertId();
         } catch (PDOException $e) {
             $message[] = array("Beim erstellen des Datenbankeintrags ist ein Fehler aufgetreten.", 2);
             $message[] = array($e->getMessage(), 2);
             Message::setMessage($message);
             return false;
         }
         if (Register::sendRegistrationEmail($email, $nickname, $passwordchk, $activation, time(), $openid)) {
             $message[] = array("Dein Benutzer " . $nickname . " wurde erfolgreich angelegt.", 1);
             Message::setMessage($message);
             return true;
         } else {
             $message[] = array("Die Email mit dem Link zum aktivieren des Nutzerkontos konnte nicht an " . $email . " verschickt werden.", 2);
             $message[] = array("Der neu angelegte User " . $nickname . " wird wieder gelöscht.", 2);
             Message::setMessage($message);
             User_old::userDelete($user_id);
             return false;
         }
     }
 }