Exemplo n.º 1
0
 /**
  * @return bool|string
  */
 function auth_doregister()
 {
     global $_language_path;
     $this->error_msg = "";
     // check for direct link to register2.php
     if (!$_SESSION['_language'] || $_SESSION['_language'] == "") {
         $_SESSION['_language'] = get_accepted_languages();
     }
     $_language_path = init_i18n($_SESSION['_language']);
     $this->auth["uname"] = Request::username('username');
     // This provides access for "crcregister.ihtml"
     $validator = new email_validation_class();
     // Klasse zum Ueberpruefen der Eingaben
     $validator->timeout = 10;
     // Wie lange warten wir auf eine Antwort des Mailservers?
     if (!Seminar_Session::check_ticket(Request::option('login_ticket'))) {
         return false;
     }
     $username = trim(Request::get('username'));
     $Vorname = trim(Request::get('Vorname'));
     $Nachname = trim(Request::get('Nachname'));
     // accept only registered domains if set
     $cfg = Config::GetInstance();
     $email_restriction = $cfg->getValue('EMAIL_DOMAIN_RESTRICTION');
     if ($email_restriction) {
         $Email = trim(Request::get('Email')) . '@' . trim(Request::get('emaildomain'));
     } else {
         $Email = trim(Request::get('Email'));
     }
     if (!$validator->ValidateUsername($username)) {
         $this->error_msg = $this->error_msg . _("Der gewählte Benutzername ist zu kurz!") . "<br>";
         return false;
     }
     // username syntaktisch falsch oder zu kurz
     // auf doppelte Vergabe wird weiter unten getestet.
     if (!$validator->ValidatePassword(Request::quoted('password'))) {
         $this->error_msg = $this->error_msg . _("Das Passwort ist zu kurz!") . "<br>";
         return false;
     }
     if (!$validator->ValidateName($Vorname)) {
         $this->error_msg = $this->error_msg . _("Der Vorname fehlt oder ist unsinnig!") . "<br>";
         return false;
     }
     // Vorname nicht korrekt oder fehlend
     if (!$validator->ValidateName($Nachname)) {
         $this->error_msg = $this->error_msg . _("Der Nachname fehlt oder ist unsinnig!") . "<br>";
         return false;
         // Nachname nicht korrekt oder fehlend
     }
     if (!$validator->ValidateEmailAddress($Email)) {
         $this->error_msg = $this->error_msg . _("Die E-Mail-Adresse fehlt oder ist falsch geschrieben!") . "<br>";
         return false;
     }
     // E-Mail syntaktisch nicht korrekt oder fehlend
     $REMOTE_ADDR = $_SERVER["REMOTE_ADDR"];
     $Zeit = date("H:i:s, d.m.Y", time());
     if (!$validator->ValidateEmailHost($Email)) {
         // Mailserver nicht erreichbar, ablehnen
         $this->error_msg = $this->error_msg . _("Der Mailserver ist nicht erreichbar, bitte überprüfen Sie, ob Sie E-Mails mit der angegebenen Adresse verschicken und empfangen können!") . "<br>";
         return false;
     } else {
         // Server ereichbar
         if (!$validator->ValidateEmailBox($Email)) {
             // aber user unbekannt. Mail an abuse!
             StudipMail::sendAbuseMessage("Register", "Emailbox unbekannt\n\nUser: {$username}\nEmail: {$Email}\n\nIP: {$REMOTE_ADDR}\nZeit: {$Zeit}\n");
             $this->error_msg = $this->error_msg . _("Die angegebene E-Mail-Adresse ist nicht erreichbar, bitte überprüfen Sie Ihre Angaben!") . "<br>";
             return false;
         } else {
             // Alles paletti, jetzt kommen die Checks gegen die Datenbank...
         }
     }
     $check_uname = StudipAuthAbstract::CheckUsername($username);
     if ($check_uname['found']) {
         //   error_log("username schon vorhanden", 0);
         $this->error_msg = $this->error_msg . _("Der gewählte Benutzername ist bereits vorhanden!") . "<br>";
         return false;
         // username schon vorhanden
     }
     if (count(User::findBySQL("Email LIKE " . DbManager::get()->quote($Email)))) {
         $this->error_msg = $this->error_msg . _("Die angegebene E-Mail-Adresse wird bereits von einem anderen Benutzer verwendet. Sie müssen eine andere E-Mail-Adresse angeben!") . "<br>";
         return false;
         // Email schon vorhanden
     }
     // alle Checks ok, Benutzer registrieren...
     $hasher = UserManagement::getPwdHasher();
     $new_user = new User();
     $new_user->username = $username;
     $new_user->perms = 'user';
     $new_user->password = $hasher->HashPassword(Request::get('password'));
     $new_user->vorname = $Vorname;
     $new_user->nachname = $Nachname;
     $new_user->email = $Email;
     $new_user->geschlecht = Request::int('geschlecht');
     $new_user->title_front = trim(Request::get('title_front', Request::get('title_front_chooser')));
     $new_user->title_rear = trim(Request::get('title_rear', Request::get('title_rear_chooser')));
     $new_user->auth_plugin = 'standard';
     $new_user->store();
     if ($new_user->user_id) {
         self::sendValidationMail($new_user);
         $this->auth["perm"] = $new_user->perms;
         return $new_user->user_id;
     }
 }
Exemplo n.º 2
0
 public static function searchForUser($searchData)
 {
     $db = DBManager::get();
     $stringCount = 0;
     $searchString = '';
     $searchDataCount = 0;
     foreach ($searchData as $name => $wert) {
         $searchDataCount++;
         if (strlen($wert) > 0) {
             if ($stringCount > 0 && $searchDataCount <= count($searchData)) {
                 $stringCount++;
                 $searchString = ' AND ' . ' ' . $name . ' LIKE ' . $db->quote('%' . $wert . '%') . ' ';
             } else {
                 $searchString = ' ' . $name . ' LIKE ' . $db->quote('%' . $wert . '%') . ' ';
                 $stringCount++;
             }
             $searchQuery .= $searchString;
         }
     }
     if (strlen($searchQuery) > 0) {
         $user = User::findBySQL($searchQuery . ' ORDER BY Nachname');
         if (empty($user)) {
             return array();
         } else {
             return $user;
         }
     } else {
         return array();
     }
 }
Exemplo n.º 3
0
 /**
  * Finds all users by given search string. Searches for the users id,
  * part of the name or the username.
  * 
  * @param type $needle The needle to search for.
  * @return array
  */
 public static function searchUser($needle)
 {
     $result = array();
     $users = User::findBySQL("Nachname LIKE CONCAT('%', :needle, '%')\n                     OR Vorname LIKE CONCAT('%', :needle, '%')\n                     OR CONCAT(Nachname, ', ', Vorname) LIKE CONCAT('%', :needle, '%')\n                     OR CONCAT(Vorname, ' ', Nachname) LIKE CONCAT('%', :needle, '%')\n                     OR username LIKE CONCAT('%', :needle, '%')", array(':needle' => $needle));
     foreach ($users as $user) {
         $name = sprintf('%s (%s)', my_substr($user->getFullname(), 0, 20), $user->username);
         $result[] = array($user->getId(), $name);
     }
     // search for deleted users
     //
     // The name of the user is part of info field,
     // old id (still in DB) is in affected column.
     //
     // The log action "USER_DEL" was removed from the list of initially
     // registered log actions in the past.
     // Search for the user if it is still in database. If not, the search
     // for deleted users is not possible.
     $log_action_deleted_user = SimpleORMapCollection::createFromArray(LogAction::findByName('USER_DEL'))->first();
     if ($log_action_deleted_user) {
         $log_events_deleted_user = LogEvent::findBySQL("action_id = ? AND info LIKE CONCAT('%', ?, '%')", array($log_action_deleted_user->getId(), $needle));
         foreach ($log_events_deleted_user as $log_event) {
             $name = sprintf('%s (%s)', $log_event->info, _('gelöscht'));
             $result[] = array($log_event->affected_range_id, $name);
         }
     }
     return $result;
 }