diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 59a5ee565..4dee5ef17 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -10,6 +10,8 @@ extrasPath = /data/WebGUI/www/extras uploadsURL = /uploads uploadsPath = /data/WebGUI/www/uploads +authMethods = LDAP, WebGUI + wobjects = Article, EventsCalendar, ExtraColumn, FAQ, FileManager, HttpProxy, \ Item, LinkList, MailForm, MessageBoard, Poll, Product, SiteMap, \ SQLReport, Survey, SyndicatedContent, USS, WobjectProxy diff --git a/lib/WebGUI/Operation/International.pm b/lib/WebGUI/Operation/International.pm index 3453dc898..63aa1c9ad 100644 --- a/lib/WebGUI/Operation/International.pm +++ b/lib/WebGUI/Operation/International.pm @@ -79,16 +79,15 @@ sub _submenu { #------------------------------------------------------------------- sub www_addInternationalMessage { - my ($output,$f,$namespace); + my ($output,$f); return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); $output = '

Add English Message

'; - $namespace = $session{wobject}; - $namespace->{WebGUI} = 'WebGUI'; - $namespace = {%{$namespace}, map {'Auth/'.$_ => 'Authentication: '.$session{authentication}->{$_}} keys(%{$session{authentication}})}; $f = WebGUI::HTMLForm->new(); $f->hidden("lid",1); $f->hidden("op","addInternationalMessageSave"); - $f->select("namespace",$namespace,"Namespace",['WebGUI']); + $f->combo("namespace", + WebGUI::SQL->buildHashRef("select namespace,namespace from international where language=1 order by namespace") + ,"Namespace",['WebGUI']); $f->textarea("message","Message"); $f->submit; $output .= $f->print; diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index 835cf1f9f..98f8fca13 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -50,8 +50,11 @@ sub www_editUserSettings { $f->integer("karmaPerLogin",WebGUI::International::get(540),$session{setting}{karmaPerLogin}); $f->interval("sessionTimeout",WebGUI::International::get(142),WebGUI::DateTime::secondsToInterval($session{setting}{sessionTimeout})); $f->yesNo("selfDeactivation",WebGUI::International::get(885),$session{setting}{selfDeactivation}); - $f->select("authMethod",$session{authentication},WebGUI::International::get(119),[$session{setting}{authMethod}]); - foreach (keys %{$session{authentication}}) { + foreach (@{$session{config}{authMethods}}) { + $options->{$_} = $_; + } + $f->select("authMethod",$options,WebGUI::International::get(119),[$session{setting}{authMethod}]); + foreach (@{$session{config}{authMethods}}) { $f->raw(WebGUI::Authentication::settingsForm($_)); } $f->submit; diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 55d702871..1c76676e4 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -82,8 +82,12 @@ sub www_addUser { -size=>5, -multiple=>1 ); - $f->select("authMethod",$session{authentication},WebGUI::International::get(164),[$session{setting}{authMethod}]); - foreach (keys %{$session{authentication}}) { + my $options; + foreach (@{$session{config}{authMethods}}) { + $options->{$_} = $_; + } + $f->select("authMethod",$options,WebGUI::International::get(164),[$session{setting}{authMethod}]); + foreach (@{$session{config}{authMethods}}) { $f->raw(WebGUI::Authentication::adminForm(0,$_)); } $f->submit; @@ -101,7 +105,7 @@ sub www_addUserSave { $u = WebGUI::User->new("new"); $session{form}{uid}=$u->userId; $u->username($session{form}{username}); - foreach (keys %{$session{authentication}}) { + foreach (@{$session{config}{authMethods}}) { WebGUI::Authentication::adminFormSave($u->userId,$_); } $u->status($session{form}{status}); @@ -232,8 +236,12 @@ sub www_editUser { } else { $f->select("status",\%status,WebGUI::International::get(816),[$u->status]); } - $f->select("authMethod",$session{authentication},WebGUI::International::get(164),[$u->authMethod]); - foreach (keys %{$session{authentication}}) { + my $options; + foreach (@{$session{config}{authMethods}}) { + $options->{$_} = $_; + } + $f->select("authMethod",$options,WebGUI::International::get(164),[$u->authMethod]); + foreach (@{$session{config}{authMethods}}) { $f->raw(WebGUI::Authentication::adminForm($u->userId,$_)); } $f->submit; @@ -251,7 +259,7 @@ sub www_editUserSave { $u->username($session{form}{username}); $u->authMethod($session{form}{authMethod}); $u->status($session{form}{status}); - foreach (keys %{$session{authentication}}) { + foreach (@{$session{config}{authMethods}}) { WebGUI::Authentication::adminFormSave($u->userId,$_); } } else { diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 0ce60bade..9f3a4326a 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -165,28 +165,13 @@ sub _time { #------------------------------------------------------------------- sub _loadAuthentication { - my ($dir, @files, $file, $cmd, $namespace, $exclude); - $dir = $session{config}{webguiRoot}.$session{os}{slash}."lib".$session{os}{slash}."WebGUI".$session{os}{slash}."Authentication"; - opendir (DIR,$dir) or WebGUI::ErrorHandler::fatalError("Can't open Authentication module directory!"); - @files = readdir(DIR); - foreach $file (@files) { - if ($file =~ /(.*?)\.pm$/) { - $namespace = $1; - $cmd = "use WebGUI::Authentication::".$namespace; - eval($cmd); - unless ($@) { - $exclude = $session{config}{excludeAuthentication}; - $exclude =~ s/ //g; - unless (isIn($namespace, split(/,/,$exclude))) { - $session{authentication}{$namespace} = $namespace; - } - } else { - WebGUI::ErrorHandler::warn("Authentication module failed to compile: $namespace. ".$@); - $session{authentication}{failed} .= "[".$namespace."] "; - } + foreach my $namespace (@{$session{config}{authMethods}}) { + my $cmd = "use WebGUI::Authentication::".$namespace; + eval($cmd); + if ($@) { + WebGUI::ErrorHandler::warn("Authentication module failed to compile: $namespace. ".$@); } } - closedir(DIR); } #-------------------------------------------------------------------