$html = new SimpleSAML_XHTML_Template($config, 'selfregister:step3_register.tpl.php', 'selfregister:selfregister');
        $html->data['formHtml'] = $formHtml;
        $html->show();
    } catch (sspmod_selfregister_Error_UserException $e) {
        // Invalid token
        $terr = new SimpleSAML_XHTML_Template($config, 'selfregister:step1_email.tpl.php', 'selfregister:selfregister');
        $error = $terr->t($e->getMesgId(), $e->getTrVars());
        $terr->data['error'] = htmlspecialchars($error);
        $terr->data['systemName'] = $systemName;
        $terr->show();
    }
} elseif (array_key_exists('sender', $_POST)) {
    try {
        // Add or update user object
        $listValidate = sspmod_selfregister_Util::genFieldView($viewAttr);
        $validator = new sspmod_selfregister_Registration_Validation($formFields, $listValidate);
        $validValues = $validator->validateInput();
        $userInfo = sspmod_selfregister_Util::processInput($validValues, $viewAttr);
        $store = sspmod_selfregister_Storage_UserCatalogue::instantiateStorage();
        $store->addUser($userInfo);
        $html = new SimpleSAML_XHTML_Template($config, 'selfregister:step4_complete.tpl.php', 'selfregister:selfregister');
        $html->data['systemName'] = $systemName;
        $html->show();
    } catch (sspmod_selfregister_Error_UserException $e) {
        // Some user error detected
        $formGen = new sspmod_selfregister_XHTML_Form($formFields, 'newUser.php');
        $showFields = sspmod_selfregister_Util::genFieldView($viewAttr);
        $formGen->fieldsToShow($showFields);
        $formGen->setReadOnly('mail');
        $values = $validator->getRawInput();
        $hidden = array();
        $html = new SimpleSAML_XHTML_Template($config, 'selfregister:lostPassword_changePassword.tpl.php', 'selfregister:selfregister');
        $html->data['formHtml'] = $formHtml;
        $html->data['uid'] = $userValues[$store->userIdAttr];
        $html->show();
    } catch (sspmod_selfregister_Error_UserException $e) {
        // Invalid token
        $terr = new SimpleSAML_XHTML_Template($config, 'selfregister:lostPassword_email.tpl.php', 'selfregister:selfregister');
        $error = $terr->t($e->getMesgId(), $e->getTrVars());
        $terr->data['error'] = htmlspecialchar($error);
        $terr->show();
    }
} elseif (array_key_exists('sender', $_POST)) {
    try {
        // Add or update user object
        $listValidate = array('pw1', 'pw2');
        $validator = new sspmod_selfregister_Registration_Validation($formFields, $listValidate);
        $email = filter_input(INPUT_POST, 'emailconfirmed', FILTER_VALIDATE_EMAIL);
        if (!$email) {
            throw new SimpleSAML_Error_Exception('E-mail parameter in request is lost');
        }
        $tg = new SimpleSAML_Auth_TimeLimitedToken($tokenLifetime);
        $tg->addVerificationData($email);
        $token = $_REQUEST['token'];
        if (!$tg->validate_token($token)) {
            throw new sspmod_selfregister_Error_UserException('invalid_token');
        }
        $userValues = $store->findAndGetUser('mail', $email);
        $validValues = $validator->validateInput();
        $newPw = sspmod_selfregister_Util::validatePassword($validValues);
        $store->changeUserPassword($userValues[$store->userIdAttr], $newPw);
        $html = new SimpleSAML_XHTML_Template($config, 'selfregister:lostPassword_complete.tpl.php', 'selfregister:selfregister');