diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /lib/phplib/Seminar_Register_Auth.class.php | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/phplib/Seminar_Register_Auth.class.php')
| -rw-r--r-- | lib/phplib/Seminar_Register_Auth.class.php | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/lib/phplib/Seminar_Register_Auth.class.php b/lib/phplib/Seminar_Register_Auth.class.php deleted file mode 100644 index f2a272e..0000000 --- a/lib/phplib/Seminar_Register_Auth.class.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -/** - * Seminar_Register_Auth.class.php - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * @author André Noack <noack@data-quest.de> - * @copyright 2000 Stud.IP Core-Group - * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2 - */ -class Seminar_Register_Auth extends Seminar_Auth -{ - public function start() - { - global $sess; - - switch ($this->getState()) { - # No valid auth info or auth is expired - case 1: - - if ($this->nobody) { - # Authenticate as nobody - $this->auth['uid'] = 'nobody'; - return true; - } else { - # Show the registration form - $this->auth_registerform(); - $this->auth['uid'] = 'form'; - exit; - } - # Login in progress, check results and act accordingly - case 3: - $uid = $this->auth_doregister(); - if ($uid) { - $this->auth['uid'] = $uid; - $GLOBALS['user'] = new Seminar_User($this->auth['uid']); - return true; - } else { - $this->auth_registerform(); - $this->auth['uid'] = 'form'; - $sess->freeze(); - exit; - } - } - - return parent::start(); - } - - public function auth_registerform() - { - $this->check_environment(); - - // load the default set of plugins - PluginEngine::loadPlugins(); - - if (!$_COOKIE[get_class($GLOBALS['sess'])]) { - $register_template = $GLOBALS['template_factory']->open('nocookies'); - } else { - $register_template = $GLOBALS['template_factory']->open('register/form'); - $register_template->validator = new email_validation_class(); - $register_template->error_msg = $this->error_msg; - $register_template->username = Request::get('username'); - $register_template->Vorname = Request::get('Vorname'); - $register_template->Nachname = Request::get('Nachname'); - $register_template->Email = Request::get('Email'); - $register_template->title_front = Request::get('title_front'); - $register_template->title_rear = Request::get('title_rear'); - $register_template->geschlecht = Request::int('geschlecht', 0); - } - PageLayout::setHelpKeyword('Basis.AnmeldungRegistrierung'); - PageLayout::setTitle(_('Registrierung')); - - echo $register_template->render( - [], - $GLOBALS['template_factory']->open('layouts/base.php') - ); - } - - /** - * @return bool|string - */ - public function auth_doregister() - { - $this->check_environment(); - - $this->error_msg = ''; - - $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 - if (Config::get()->EMAIL_DOMAIN_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::get('password'))) { - $this->error_msg = $this->error_msg . _('Das Passwort ist zu kurz, zu lang oder enthält nicht erlaubte Zeichen!') . '<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'); - - 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']) { - $this->error_msg = $this->error_msg . _('Der gewählte Benutzername ist bereits vorhanden!') . '<br>'; - return false; // username schon vorhanden - } - - if (User::countBySQL('Email = ?', [$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) { - return false; - } - - self::sendValidationMail($new_user); - - $this->auth['perm'] = $new_user->perms; - $this->auth['uname'] = $new_user->username; - $this->auth['auth_plugin'] = $new_user->auth_plugin; - - return $new_user->user_id; - } - - /** - * Send a validation mail to the passed user - * - * @param User $user a user-object or id of the user - * to resend the validation mail for - */ - public static function sendValidationMail($user){ - // if no user-object is given interpret it as a user-id - if (is_string($user)) { - $user = new User($user); - } - - // template-variables for the include partial - $Zeit = date('H:i:s, d.m.Y', $user->mkdate); - $username = $user->username; - $Vorname = $user->vorname; - $Nachname = $user->nachname; - $Email = $user->email; - - // (re-)send the confirmation mail - $to = $user->email; - $token = Token::create(7 * 24 * 60 * 60, $user->id); // Link is valid for 1 week - $url = $GLOBALS['ABSOLUTE_URI_STUDIP'] . 'email_validation.php?secret=' . $token; - $mail = new StudipMail(); - $abuse = StudipMail::getAbuseEmail(); - - $lang_path = getUserLanguagePath($user->id); - - // include language-specific subject and mailbody - // TODO: This should be refactored so that the included file returns an array - include "locale/{$lang_path}/LC_MAILS/register_mail.inc.php"; // Defines $subject and $mailbody - - // send the mail - $mail->setSubject($subject ?? '') - ->addRecipient($to) - ->setBodyText($mailbody ?? '') - ->send(); - } - - /** - * Validates a given hash for a given user id. - * @param string $secret Secret to validate - * @param string $user_id User id - * @return bool - */ - public static function validateSecret($secret, $user_id) - { - return Token::isValid($secret, $user_id); - } -} |
