CONFIG_SUITE)); if (!User::isLoggedIn()) { // Guest Render::addTemplate('main/guest', array('prefix' => CONFIG_PREFIX, 'suite' => CONFIG_SUITE, 'idm' => CONFIG_IDM)); return; } // Logged in user -- if (User::isLocalOnly()) { // Local test account $this->renderLocalAccount(); return; } if (!User::isShibbolethAuth()) { // Should not be possible Message::addError('Sie sind nicht korrekt authentifiziert. Bitte melden Sie sich erneut an.'); Session::delete(); return; } // --- Below here we know the user via shibboleth if (User::isInDatabase()) { // User is also in DB, so he signed up for the service $this->renderShibbolethRegistered(); return; } if (!User::isTutor()) { return; } // User is not in DB, so he might want so sign up for the service - see if conditions are met if (User::getOrganization() !== false) { // Organization is known, show signup form $this->renderShibbolethUnregistered(); return; } // Nothing we can do here, show error message :-( if (User::getRemoteOrganizationId() !== false) { // Organization is not known, see if we at least have an idea Message::addWarning('Ihre Hochschule/Einrichtung {{0}} ist leider nicht bekannt. Bitte kontaktieren Sie den Support.', User::getRemoteOrganizationId()); } else { // No idea where the user is coming from Message::addError('Ihr IdP sendet leider keine Informationen über Ihre Hochschul-/Einrichtungszugehörigkeit'); } } private function renderShibbolethRegistered() { Render::addTemplate('main/logged-in', array('suite' => CONFIG_SUITE)); } private function renderShibbolethUnregistered() { $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 userid FROM user WHERE email = :email LIMIT 1', array( 'email' => $mail )); if ($existing !== false) { $data['testlogin'] = $existing['userid']; } } } $data['suite'] = CONFIG_SUITE; $data['idm'] = CONFIG_IDM; Render::addTemplate('main/deploy', $data); } private function renderLocalAccount() { $data = User::getData(); $data['organization'] = User::getOrganizationName(); Render::addTemplate('main/logged-in-testacc', $data); } }