From 5136f6622e7ca87695c158a31cb8e78299f1967a Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 3 Jun 2015 14:26:22 +0200 Subject: Allow registration, add support for creating test accounts, rename satellite to organization --- modules/adduser.inc.php | 4 ++-- modules/main.inc.php | 16 ++++++++++++++++ modules/register.inc.php | 31 +++++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/adduser.inc.php b/modules/adduser.inc.php index fc0dfa7..f27717b 100644 --- a/modules/adduser.inc.php +++ b/modules/adduser.inc.php @@ -40,7 +40,7 @@ class Page_AddUser extends Page $suffix = $organizationid; $login .= "@$suffix"; } - $ok = Database::queryFirst('SELECT organizationid FROM satellite_suffix WHERE organizationid = :o AND suffix = :s LIMIT 1', array( + $ok = Database::queryFirst('SELECT organizationid FROM organization_suffix WHERE organizationid = :o AND suffix = :s LIMIT 1', array( 'o' => $organizationid, 's' => $suffix )); @@ -66,7 +66,7 @@ class Page_AddUser extends Page protected function doRender() { // Show mask - $res = Database::simpleQuery('SELECT organizationid, name FROM satellite ORDER BY name ASC'); + $res = Database::simpleQuery('SELECT organizationid, name FROM organization ORDER BY name ASC'); $orgs = array(); $orgs[] = array( 'organizationid' => '', diff --git a/modules/main.inc.php b/modules/main.inc.php index c1382e6..3e3aff8 100644 --- a/modules/main.inc.php +++ b/modules/main.inc.php @@ -59,6 +59,22 @@ class Page_Main extends Page { $data = User::getData(); $data['organization'] = User::getOrganizationName(); + // Shoe testacc merge form if organization has test accounts + $res = Database::queryFirst('SELECT Count(*) as cnt FROM user WHERE organizationid = :oid', array( + 'oid' => User::getOrganizationId() + )); + if ($res !== false && $res['cnt'] > 0) { + $data['testacc'] = true; + $mail = trim(User::getMail()); + if (!empty($mail)) { + $existing = Database::queryFirst('SELECT login FROM user WHERE email = :email LIMIT 1', array( + 'email' => $mail + )); + if ($existing !== false) { + $data['testlogin'] = $existing['login']; + } + } + } Render::addTemplate('main/deploy', $data); } diff --git a/modules/register.inc.php b/modules/register.inc.php index 0fec4c7..d24d304 100644 --- a/modules/register.inc.php +++ b/modules/register.inc.php @@ -19,10 +19,37 @@ class Page_Register extends Page Util::redirect('?do=Main'); } + if (Request::post('testlogin')) { + // Check if one of firstname, lastname or email matches + $user = Database::queryFirst('SELECT firstname, lastname, email, organizationid FROM user WHERE login = :login LIMIT 1', array('login' => Request::post('testlogin'))); + if ($user === false || User::getOrganizationId() !== $user['organizationid']) { + // Invalid Login + Message::addError('Test-Account {{0}} unbekannt. ' + . ' Bitte wenden Sie sich an den bwLehrpool-Support, wenn dieser Test-Account Ihnen gehört.', Request::post('testlogin')); + Util::redirect('?do=Main'); + } + if (User::getLastName() !== $user['lastname'] + && User::getFirstName() !== $user['firstname'] + && User::getMail() !== $user['email']) { + // No match by personal information + Message::addError('Ihre Metadaten stimmen nicht mit dem Test-Account {{0}} überein. ' + . ' Bitte wenden Sie sich an den bwLehrpool-Support, wenn dieser Test-Account Ihnen gehört.', Request::post('testlogin')); + Util::redirect('?do=Main'); + } + // Check if anonymous is requested, but user shared VMs with his testacc + if (Image::getImageCount(Request::post('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'); + } + } + if (Request::post('agb') === 'on') { // Put stuff in DB - User::deploy(Request::post('share') !== 'on'); - Message::addSuccess('Ihr Konto wurde freigeschaltet'); + if (User::deploy(Request::post('share') !== 'on', Request::post('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.'); + } Util::redirect('?do=Main'); } Message::addError('Sie müssen den Nutzungsbedingungen zustimmen'); -- cgit v1.2.3-55-g7522