diff options
Diffstat (limited to 'modules/register.inc.php')
-rw-r--r-- | modules/register.inc.php | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/modules/register.inc.php b/modules/register.inc.php index 19ccfcf..f55e900 100644 --- a/modules/register.inc.php +++ b/modules/register.inc.php @@ -23,26 +23,35 @@ class Page_Register extends Page Util::redirect('?do=Main'); } - if (Request::post('testlogin')) { + $anonymous = (Request::post('share') !== 'on'); + $testLogin = Request::post('testlogin'); + if (empty($testLogin)) { + $testLogin = false; + } + if ($testLogin !== false) { // Check if one of firstname, lastname or email matches - $user = Database::queryFirst('SELECT firstname, lastname, email, organizationid FROM user WHERE userid = :login LIMIT 1', - array('login' => Request::post('testlogin'))); + $user = Database::queryFirst('SELECT firstname, lastname, email, password, organizationid FROM user WHERE userid = :login LIMIT 1', + array('login' => $testLogin)); if ($user === false || User::getOrganizationId() !== $user['organizationid']) { // Invalid Login Message::addError('Test-Account {{0}} unbekannt. ' - . ' Bitte wenden Sie sich an den {{1}}-Support, wenn dieser Test-Account Ihnen gehört.', Request::post('testlogin'), CONFIG_SUITE); + . ' Bitte wenden Sie sich an den {{1}}-Support, wenn dieser Test-Account Ihnen gehört.', $testLogin, CONFIG_SUITE); + Util::redirect('?do=Main'); + } + if (empty($user['password']) && !CONFIG_ALLOW_SHIB_MERGE) { + Message::addError('Verknüpfung mit altem Shibboleth-basiertem Account nicht erlaubt'); Util::redirect('?do=Main'); } - if (User::getLastName() !== $user['lastname'] - && User::getFirstName() !== $user['firstname'] - && User::getMail() !== $user['email']) { + if (strcasecmp(User::getLastName(), $user['lastname']) !== 0 + || strcasecmp(User::getFirstName(), $user['firstname']) !== 0 + || strcasecmp(User::getMail(), $user['email']) !== 0) { // No match by personal information Message::addError('Ihre Metadaten stimmen nicht mit dem Test-Account {{0}} überein. ' - . ' Bitte wenden Sie sich an den {{1}}-Support, wenn dieser Test-Account Ihnen gehört.', Request::post('testlogin'), CONFIG_SUITE); + . ' Bitte wenden Sie sich an den {{1}}-Support, wenn dieser Test-Account Ihnen gehört.', $testLogin, CONFIG_SUITE); Util::redirect('?do=Main'); } // Check if anonymous is requested, but user shared VMs with his testacc - if (Image::getImageCount(Request::post('testlogin')) > 0) { + if ($anonymous && Image::getImageCount($testLogin) > 0) { Message::addError('Sie haben mit Ihrem Test-Account Virtuelle Maschinen auf den Zentral-Server hochgeladen und können" . " sich daher nicht ohne Teilnahme am landesweiten VM-Austausch registrieren.'); Util::redirect('?do=Main'); @@ -59,7 +68,7 @@ class Page_Register extends Page } elseif (!User::hasFullName()) { Message::addError('Ihr Identity Provider hat keinen Namen zu Ihrem Account geliefert. Registrierung nicht möglich.'); // Put stuff in DB - } elseif (User::deploy(Request::post('share') !== 'on', Request::post('testlogin'))) { + } elseif (User::deploy($anonymous, $testLogin)) { Message::addSuccess('Ihr Konto wurde freigeschaltet'); } else { Message::addError('Fehler beim Zusammenführen mit Ihrem Test-Account. Bitte wenden Sie sich an den Support.'); |