diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index 66e894837..399378854 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -18,6 +18,7 @@ - fix: No Help link icon in Matrix edit page - fix: Problems with In/Out Board (labeling only) - fix: Adding HTTP Proxy + - fix: op=saveSettings broken - fix: EMS Discount Pass Not Applied - fix: Commerce checkout confirmation very confusing diff --git a/docs/gotcha.txt b/docs/gotcha.txt index fa0b168ac..c6043fd15 100644 --- a/docs/gotcha.txt +++ b/docs/gotcha.txt @@ -7,6 +7,17 @@ upgrading from one version to the next, or even between multiple versions. Be sure to heed the warnings contained herein as they will save you many hours of grief. +6.99.4 +-------------------------------------------------------------------- + + * A bug was just discovered in the WebGUI::Auth API in that it was + missing the editUserSettingsFormSave() method. If you have + built your own auth module, then you need to add this method + or your auth settings will not save. See WebGUI::Auth::WebGUI + for an example of how to do this. If you are not using custom + auth, then don't worry about this. + + 6.99.0 -------------------------------------------------------------------- diff --git a/lib/WebGUI/Auth.pm b/lib/WebGUI/Auth.pm index 7af98ca17..8835ca8ba 100644 --- a/lib/WebGUI/Auth.pm +++ b/lib/WebGUI/Auth.pm @@ -423,6 +423,28 @@ sub editUserFormSave { #------------------------------------------------------------------- +=head2 editUserSettingsForm ( ) + +You need to override this method in your auth module. It needs to return a the rows in a form for the stuff you want to be configured through webgui settings. + +=cut + +sub editUserSettingsForm { +} + +#------------------------------------------------------------------- + +=head2 editUserSettingsFormSave ( ) + +You need to override this method in your auth module. It's the save for the editUserSettingsFormSave method. + +=cut + +sub editUserSettingsFormSave { +} + +#------------------------------------------------------------------- + =head2 error ( [errorMsg] ) Sets or returns the error currently stored in the object diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm index 27598f3d9..d89d85109 100644 --- a/lib/WebGUI/Auth/LDAP.pm +++ b/lib/WebGUI/Auth/LDAP.pm @@ -353,6 +353,14 @@ sub editUserSettingsForm { return $f->printRowsOnly; } +#------------------------------------------------------------------- +sub editUserSettingsFormSave { + my $self = shift; + my $f = $self->session->form; + my $s = $self->session->setting; + $s->set("ldapConnection", $f->process("ldapConnection","selectBox")); +} + #------------------------------------------------------------------- sub getAccountTemplateId { my $self = shift; diff --git a/lib/WebGUI/Auth/WebGUI.pm b/lib/WebGUI/Auth/WebGUI.pm index 3c6566a48..9b56d1e63 100644 --- a/lib/WebGUI/Auth/WebGUI.pm +++ b/lib/WebGUI/Auth/WebGUI.pm @@ -332,12 +332,10 @@ sub editUserSettingsForm { my $self = shift; my $i18n = WebGUI::International->new($self->session,'AuthWebGUI'); my $f = WebGUI::HTMLForm->new($self->session); - $f->text( + $f->integer( -name=>"webguiPasswordLength", -value=>$self->session->setting->get("webguiPasswordLength"), -label=>$i18n->get(15), - -size=>5, - -maxLength=>5, ); $f->interval( -name=>"webguiPasswordTimeout", @@ -422,6 +420,29 @@ sub editUserSettingsForm { return $f->printRowsOnly; } +#------------------------------------------------------------------- +sub editUserSettingsFormSave { + my $self = shift; + my $f = $self->session->form; + my $s = $self->session->setting; + $s->set("webguiPasswordLength", $f->process("webguiPasswordLength","integer")); + $s->set("webguiPasswordTimeout", $f->process("webguiPasswordTimeout","interval")); + $s->set("webguiExpirePasswordOnCreation", $f->process("webguiExpirePasswordOnCreation","yesNo")); + $s->set("webguiSendWelcomeMessage", $f->process("webguiSendWelcomeMessage","yesNo")); + $s->set("webguiWelcomeMessage", $f->process("webguiWelcomeMessage","textarea")); + $s->set("webguiChangeUsername", $f->process("webguiChangeUsername","yesNo")); + $s->set("webguiChangePassword", $f->process("webguiChangePassword","yesNo")); + $s->set("webguiPasswordRecovery", $f->process("webguiPasswordRecovery","yesNo")); + $s->set("webguiRecoverPasswordEmail", $f->process("webguiRecoverPasswordEmail","textarea")); + $s->set("webguiValidateEmail", $f->process("webguiValidateEmail","yesNo")); + $s->set("webguiUseCaptcha", $f->process("webguiUseCaptcha","yesNo")); + $s->set("webguiAccountTemplate", $f->process("webguiAccountTemplate","template")); + $s->set("webguiCreateAccountTemplate", $f->process("webguiCreateAccountTemplate","template")); + $s->set("webguiExpiredPasswordTemplate", $f->process("webguiExpiredPasswordTemplate","template")); + $s->set("webguiLoginTemplate", $f->process("webguiLoginTemplate","template")); + $s->set("webguiPasswordRecoveryTemplate", $f->process("webguiPasswordRecoveryTemplate","template")); +} + #------------------------------------------------------------------- sub getAccountTemplateId { my $self = shift; diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index f4c25dab0..2efc6de1f 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -25,13 +25,322 @@ Package WebGUI::Operation::Settings Operation handler for sitewide settings for content, messaging, authentication, etc. +=head1 FUNCTIONS + +The following functions are available from this package. + +=cut + +#------------------------------------------------------------------- + +=head2 definition ( ) + +Returns an array reference used by www_editSettings and www_editSettingsSave to process the form data. + +=cut + +sub definition { + my $session = shift; + my $i18n = shift; + my @fields = (); + # company info + push(@fields, { + tab=>"company", + fieldType=>"text", + name=>"companyName", + label=>$i18n->get(125), + hoverHelp=>$i18n->get('125 description'), + defaultValue=>$session->setting->get("companyName") + }); + push(@fields, { + tab=>"company", + fieldType=>"text", + name=>"companyEmail", + label=>$i18n->get(126), + hoverHelp=>$i18n->get('126 description'), + defaultValue=>$session->setting->get("companyEmail") + }); + push(@fields, { + tab=>"company", + fieldType=>"url", + name=>"companyURL", + label=>$i18n->get(127), + hoverHelp=>$i18n->get('127 description'), + defaultValue=>$session->setting->get("companyURL") + }); + # content settings + push(@fields, { + tab=>"content", + fieldType=>"workflow", + name=>"defaultVersionTagWorkflow", + defaultValue=>$session->setting->get("defaultVersionTagWorkflow"), + type=>"WebGUI::VersionTag", + label=>$i18n->get("default version tag workflow"), + hoverHelp=>$i18n->get('default version tag workflow help') + }); + my %htmlFilter = ( + 'none'=>$i18n->get(420), + 'most'=>$i18n->get(421), + 'javascript'=>$i18n->get(526), + 'all'=>$i18n->get(419) + ); + push(@fields, { + tab=>"content", + fieldType=>"asset", + name=>"defaultPage", + label=>$i18n->get(527), + hoverHelp=>$i18n->get('527 description'), + defaultValue=>$session->setting->get("defaultPage") + }); + push(@fields, { + tab=>"content", + fieldType=>"asset", + name=>"notFoundPage", + label=>$i18n->get(141), + hoverHelp=>$i18n->get('141 description'), + defaultValue=>$session->setting->get("notFoundPage") + }); + push(@fields, { + tab=>"content", + fieldType=>"text", + name=>"urlExtension", + defaultValue=>$session->setting->get("urlExtension"), + label=>$i18n->get("url extension"), + hoverHelp=>$i18n->get("url extension description"), + }); + push(@fields, { + tab=>"content", + fieldType=>"integer", + name=>"maxAttachmentSize", + label=>$i18n->get(130), + hoverHelp=>$i18n->get('130 description'), + defaultValue=>$session->setting->get("maxAttachmentSize") + }); + push(@fields, { + tab=>"content", + fieldType=>"integer", + name=>"maxImageSize", + label=>$i18n->get(583), + hoverHelp=>$i18n->get('583 description'), + defaultValue=>$session->setting->get("maxImageSize") + }); + push(@fields, { + tab=>"content", + fieldType=>"integer", + name=>"thumbnailSize", + label=>$i18n->get(406), + hoverHelp=>$i18n->get('406 description'), + defaultValue=>$session->setting->get("thumbnailSize") + }); + push(@fields, { + tab=>"content", + fieldType=>"yesNo", + name=>"metaDataEnabled", + label=>$i18n->get("Enable Metadata"), + hoverHelp=>$i18n->get("Enable Metadata description"), + defaultValue=>$session->setting->get("metaDataEnabled") + }); + # user interface settings + push(@fields, { + tab=>"ui", + fieldType=>"selectBox", + name=>"richEditor", + label=>$i18n->get("default rich editor"), + hoverHelp=>$i18n->get("default rich editor description"), + defaultValue=>[$session->setting->get("richEditor")], + options=>WebGUI::Asset::RichEdit->getList($session), + defaultValue=>["PBrichedit000000000001"] + }); + push(@fields, { + tab=>"ui", + fieldType=>"integer", + name=>"textBoxSize", + label=>$i18n->get(465), + hoverHelp=>$i18n->get('465 description'), + defaultValue=>$session->setting->get("textBoxSize") + }); + push(@fields, { + tab=>"ui", + fieldType=>"template", + name=>"userFunctionStyleId", + label=>$i18n->get('user function style'), + hoverHelp=>$i18n->get('user function style description'), + namespace=>"style", + defaultValue=>$session->setting->get("userFunctionStyleId") + }); + push(@fields, { + tab=>"ui", + fieldType=>"template", + name=>"AdminConsoleTemplate", + label=>$i18n->get('admin console template'), + hoverHelp=>$i18n->get('admin console template description'), + namespace=>"AdminConsole", + defaultValue=>$session->setting->get("AdminConsoleTemplate") + }); + # messaging settings + push(@fields, { + tab=>"messaging", + fieldType=>"text", + name=>"smtpServer", + label=>$i18n->get(135), + hoverHelp=>$i18n->get('135 description'), + defaultValue=>$session->setting->get("smtpServer") + }); + push(@fields, { + tab=>"messaging", + fieldType=>"textarea", + name=>"mailFooter", + label=>$i18n->get(824), + hoverHelp=>$i18n->get('824 description'), + defaultValue=>$session->setting->get("mailFooter") + }); + push(@fields, { + tab=>"messaging", + fieldType=>"email", + name=>"mailReturnPath", + label=>$i18n->get("mail return path"), + hoverHelp=>$i18n->get('mail return path help'), + defaultValue=>$session->setting->get("mailReturnPath") + }); + # misc + push(@fields, { + tab=>"misc", + fieldType=>"yesNo", + name=>"preventProxyCache", + label=>$i18n->get(400), + hoverHelp=>$i18n->get('400 description'), + defaultValue=>$session->setting->get("preventProxyCache") + }); + push(@fields, { + tab=>"misc", + fieldType=>"text", + name=>"debugIp", + label=>$i18n->get("debug ip"), + hoverHelp=>$i18n->get("debug ip description"), + defaultValue=>$session->setting->get("debugIp") + }); + push(@fields, { + tab=>"misc", + fieldType=>"yesNo", + name=>"showDebug", + label=>$i18n->get(707), + hoverHelp=>$i18n->get('707 description'), + defaultValue=>$session->setting->get("showDebug") + }); + push(@fields, { + tab=>"misc", + fieldType=>"yesNo", + name=>"showPerformanceIndicators", + label=>$i18n->get('show performance indicators'), + hoverHelp=>$i18n->get('show performance indicators description'), + defaultValue=>$session->setting->get("showPerformanceIndicators") + }); + push(@fields, { + tab=>"misc", + fieldType=>"selectBox", + name=>"hostToUse", + defaultValue=>[$session->setting->get("hostToUse")], + options=>{ + sitename=>$i18n->get(1070), + HTTP_HOST=>$i18n->get(1071) + }, + label=>$i18n->get(1069), + hoverHelp=>$i18n->get('1069 description'), + }); + # user settings + push(@fields, { + tab=>"user", + fieldType=>"yesNo", + name=>"anonymousRegistration", + label=>$i18n->get(118), + hoverHelp=>$i18n->get('118 description'), + defaultValue=>$session->setting->get("anonymousRegistration") + }); + push(@fields, { + tab=>"user", + fieldType=>"workflow", + none=>1, + type=>"WebGUI::User", + name=>"runOnRegistration", + label=>$i18n->get(559), + hoverHelp=>$i18n->get('559 description'), + defaultValue=>$session->setting->get("runOnRegistration") + }); + push(@fields, { + tab=>"user", + fieldType=>"yesNo", + name=>"useKarma", + label=>$i18n->get(539), + hoverHelp=>$i18n->get('539 description'), + defaultValue=>$session->setting->get("useKarma") + }); + push(@fields, { + tab=>"user", + fieldType=>"integer", + name=>"karmaPerLogin", + label=>$i18n->get(540), + hoverHelp=>$i18n->get('540 description'), + defaultValue=>$session->setting->get("karmaPerLogin") + }); + push(@fields, { + tab=>"user", + fieldType=>"interval", + name=>"sessionTimeout", + label=>$i18n->get(142), + hoverHelp=>$i18n->get('142 description'), + defaultValue=>$session->setting->get("sessionTimeout") + }); + push(@fields, { + tab=>"user", + fieldType=>"yesNo", + name=>"selfDeactivation", + label=>$i18n->get(885), + hoverHelp=>$i18n->get('885 description'), + defaultValue=>$session->setting->get("selfDeactivation") + }); + push(@fields, { + tab=>"user", + fieldType=>"yesNo", + name=>"encryptLogin", + label=>$i18n->get(1006), + hoverHelp=>$i18n->get('1006 description'), + defaultValue=>$session->setting->get("encryptLogin") + }); + push(@fields, { + tab=>"user", + fieldType=>"yesNo", + name=>"passiveProfilingEnabled", + label=>$i18n->get("Enable passive profiling"), + hoverHelp=>$i18n->get("Enable passive profiling description"), + defaultValue=>$session->setting->get("passiveProfilingEnabled"), + extras=>'onchange="alert(\''.$i18n->get("Illegal Warning").'\')" ' + }); + # auth settings + my $options; + foreach (@{$session->config->get("authMethods")}) { + $options->{$_} = $_; + } + push(@fields, { + tab=>"auth", + fieldType=>"selectBox", + name=>"authMethod", + options=>$options, + label=>$i18n->get(164), + hoverHelp=>$i18n->get('164 description'), + defaultValue=>[$session->setting->get("authMethod")], + }); + return \@fields; +} + + +#------------------------------------------------------------------- + =head2 www_editSettings ( $session ) Display a form for sitewide settings, if the user is in group Admin (3). =cut -#------------------------------------------------------------------- sub www_editSettings { my $session = shift; return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); @@ -51,229 +360,10 @@ sub www_editSettings { $tabform->hidden({ name=>"op", value=>"saveSettings"}); -# company settings - $tabform->getTab("company")->text( - -name=>"companyName", - -label=>$i18n->get(125), - -hoverHelp=>$i18n->get('125 description'), - -value=>$session->setting->get("companyName") - ); - $tabform->getTab("company")->text( - -name=>"companyEmail", - -label=>$i18n->get(126), - -hoverHelp=>$i18n->get('126 description'), - -value=>$session->setting->get("companyEmail") - ); - $tabform->getTab("company")->url( - -name=>"companyURL", - -label=>$i18n->get(127), - -hoverHelp=>$i18n->get('127 description'), - -value=>$session->setting->get("companyURL") - ); -# content settings - $tabform->getTab("content")->workflow( - name=>"defaultVersionTagWorkflow", - value=>$session->setting->get("defaultVersionTagWorkflow"), - type=>"WebGUI::VersionTag", - label=>$i18n->get("default version tag workflow"), - hoverHelp=>$i18n->get('default version tag workflow help') - ); - my %htmlFilter = ( - 'none'=>$i18n->get(420), - 'most'=>$i18n->get(421), - 'javascript'=>$i18n->get(526), - 'all'=>$i18n->get(419) - ); - $tabform->getTab("content")->asset( - -name=>"defaultPage", - -label=>$i18n->get(527), - -hoverHelp=>$i18n->get('527 description'), - -value=>$session->setting->get("defaultPage") - ); - $tabform->getTab("content")->asset( - -name=>"notFoundPage", - -label=>$i18n->get(141), - -hoverHelp=>$i18n->get('141 description'), - -value=>$session->setting->get("notFoundPage") - ); - $tabform->getTab("content")->text( - -name=>"urlExtension", - -value=>$session->setting->get("urlExtension"), - -label=>$i18n->get("url extension"), - -hoverHelp=>$i18n->get("url extension description"), - ); - $tabform->getTab("content")->integer( - -name=>"maxAttachmentSize", - -label=>$i18n->get(130), - -hoverHelp=>$i18n->get('130 description'), - -value=>$session->setting->get("maxAttachmentSize") - ); - $tabform->getTab("content")->integer( - -name=>"maxImageSize", - -label=>$i18n->get(583), - -hoverHelp=>$i18n->get('583 description'), - -value=>$session->setting->get("maxImageSize") - ); - $tabform->getTab("content")->integer( - -name=>"thumbnailSize", - -label=>$i18n->get(406), - -hoverHelp=>$i18n->get('406 description'), - -value=>$session->setting->get("thumbnailSize") - ); - $tabform->getTab("content")->yesNo( - -name=>"metaDataEnabled", - -label=>$i18n->get("Enable Metadata"), - -hoverHelp=>$i18n->get("Enable Metadata description"), - -value=>$session->setting->get("metaDataEnabled") - ); -# user interface settings - $tabform->getTab("ui")->selectBox( - -name=>"richEditor", - -label=>$i18n->get("default rich editor"), - -hoverHelp=>$i18n->get("default rich editor description"), - -value=>[$session->setting->get("richEditor")], - -options=>WebGUI::Asset::RichEdit->getList($session), - -defaultValue=>["PBrichedit000000000001"] - ); - $tabform->getTab("ui")->integer( - -name=>"textBoxSize", - -label=>$i18n->get(465), - -hoverHelp=>$i18n->get('465 description'), - -value=>$session->setting->get("textBoxSize") - ); - $tabform->getTab("ui")->template( - -name=>"userFunctionStyleId", - -label=>$i18n->get('user function style'), - -hoverHelp=>$i18n->get('user function style description'), - -namespace=>"style", - -value=>$session->setting->get("userFunctionStyleId") - ); - $tabform->getTab("ui")->template( - -name=>"AdminConsoleTemplate", - -label=>$i18n->get('admin console template'), - -hoverHelp=>$i18n->get('admin console template description'), - -namespace=>"AdminConsole", - -value=>$session->setting->get("AdminConsoleTemplate") - ); -# messaging settings - $tabform->getTab("messaging")->text( - -name=>"smtpServer", - -label=>$i18n->get(135), - -hoverHelp=>$i18n->get('135 description'), - -value=>$session->setting->get("smtpServer") - ); - $tabform->getTab("messaging")->textarea( - -name=>"mailFooter", - -label=>$i18n->get(824), - -hoverHelp=>$i18n->get('824 description'), - -value=>$session->setting->get("mailFooter") - ); - $tabform->getTab("messaging")->email( - -name=>"mailReturnPath", - -label=>$i18n->get("mail return path"), - -hoverHelp=>$i18n->get('mail return path help'), - -value=>$session->setting->get("mailReturnPath") - ); -# misc - $tabform->getTab("misc")->yesNo( - -name=>"preventProxyCache", - -label=>$i18n->get(400), - -hoverHelp=>$i18n->get('400 description'), - -value=>$session->setting->get("preventProxyCache") - ); - $tabform->getTab("misc")->text( - -name=>"debugIp", - -label=>$i18n->get("debug ip"), - -hoverHelp=>$i18n->get("debug ip description"), - -value=>$session->setting->get("debugIp") - ); - $tabform->getTab("misc")->yesNo( - -name=>"showDebug", - -label=>$i18n->get(707), - -hoverHelp=>$i18n->get('707 description'), - -value=>$session->setting->get("showDebug") - ); - $tabform->getTab("misc")->yesNo( - -name=>"showPerformanceIndicators", - -label=>$i18n->get('show performance indicators'), - -hoverHelp=>$i18n->get('show performance indicators description'), - -value=>$session->setting->get("showPerformanceIndicators") - ); - $tabform->getTab("misc")->selectBox( - -name=>"hostToUse", - -value=>[$session->setting->get("hostToUse")], - -options=>{ - sitename=>$i18n->get(1070), - HTTP_HOST=>$i18n->get(1071) - }, - -label=>$i18n->get(1069), - -hoverHelp=>$i18n->get('1069 description'), - ); -# user settings - $tabform->getTab("user")->yesNo( - -name=>"anonymousRegistration", - -label=>$i18n->get(118), - -hoverHelp=>$i18n->get('118 description'), - -value=>$session->setting->get("anonymousRegistration") - ); - $tabform->getTab("user")->workflow( - -none=>1, - -type=>"WebGUI::User", - -name=>"runOnRegistration", - -label=>$i18n->get(559), - -hoverHelp=>$i18n->get('559 description'), - -value=>$session->setting->get("runOnRegistration") - ); - $tabform->getTab("user")->yesNo( - -name=>"useKarma", - -label=>$i18n->get(539), - -hoverHelp=>$i18n->get('539 description'), - -value=>$session->setting->get("useKarma") - ); - $tabform->getTab("user")->integer( - -name=>"karmaPerLogin", - -label=>$i18n->get(540), - -hoverHelp=>$i18n->get('540 description'), - -value=>$session->setting->get("karmaPerLogin") - ); - $tabform->getTab("user")->interval( - -name=>"sessionTimeout", - -label=>$i18n->get(142), - -hoverHelp=>$i18n->get('142 description'), - -value=>$session->setting->get("sessionTimeout") - ); - $tabform->getTab("user")->yesNo( - -name=>"selfDeactivation", - -label=>$i18n->get(885), - -hoverHelp=>$i18n->get('885 description'), - -value=>$session->setting->get("selfDeactivation") - ); - $tabform->getTab("user")->yesNo( - -name=>"encryptLogin", - -label=>$i18n->get(1006), - -hoverHelp=>$i18n->get('1006 description'), - -value=>$session->setting->get("encryptLogin") - ); - $tabform->getTab("user")->yesNo( - -name=>"passiveProfilingEnabled", - -label=>$i18n->get("Enable passive profiling"), - -hoverHelp=>$i18n->get("Enable passive profiling description"), - -value=>$session->setting->get("passiveProfilingEnabled"), - -extras=>'onchange="alert(\''.$i18n->get("Illegal Warning").'\')" ' - ); -# auth settings - my $options; - foreach (@{$session->config->get("authMethods")}) { - $options->{$_} = $_; - } - $tabform->getTab("auth")->selectBox( - -name=>"authMethod", - -options=>$options, - -label=>$i18n->get(164), - -hoverHelp=>$i18n->get('164 description'), - -value=>[$session->setting->get("authMethod")], - -extras=>"onchange=\"active=operateHidden(this.options[this.selectedIndex].value,active)\"" - ); + my $definitions = definition($session, $i18n); + foreach my $definition (@{$definitions}) { + $tabform->getTab($definition->{tab})->dynamicField(%{$definition}); + } foreach (@{$session->config->get("authMethods")}) { $tabform->getTab("auth")->fieldSetStart($_); my $authInstance = WebGUI::Operation::Auth::getInstance($session,$_,1); @@ -297,18 +387,16 @@ is in group Admin (3). Returns the user to the Edit Settings screen, www_editSe sub www_saveSettings { my $session = shift; return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); - my ($key, $value); - foreach $key (%{$session->form->paramsHashRef}) { - $value = $session->form->process("$key"); - if ($key =~ m/(.*)_interval/) { - $value = $session->form->interval($1); - $key = $1; - } elsif ($key =~ m/_units/) { - next; - } - unless ($key eq "op") { - $session->setting->set($key,$value); - } + my $i18n = WebGUI::International->new($session, "WebGUI"); + my $definitions = definition($session, $i18n); + my $setting = $session->setting; + my $form = $session->form; + foreach my $definition (@{$definitions}) { + $setting->set($definition->{name}, $form->process($definition->{name}, $definition->{fieldType}, undef, $definition)); + } + foreach (@{$session->config->get("authMethods")}) { + my $authInstance = WebGUI::Operation::Auth::getInstance($session,$_,1); + $authInstance->editUserSettingsFormSave; } return www_editSettings($session); }