} 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();
        $values['mail'] = $hidden['emailconfirmed'] = $_REQUEST['emailconfirmed'];
        $hidden['token'] = $_REQUEST['token'];
        $formGen->addHiddenData($hidden);
 /**
  * Asset that the generated storage object is of the configured kind
  * @group catalogue
  */
 public function testConfigControlledStorageCreation()
 {
     $this->userStore = sspmod_selfregister_Storage_UserCatalogue::instantiateStorage();
     $this->assertEquals('sspmod_selfregister_Storage_LdapMod', get_class($this->userStore));
 }