diff --git a/Dam/Application.pm b/Dam/Application.pm index 0eb2628..7139231 100644 --- a/Dam/Application.pm +++ b/Dam/Application.pm @@ -138,7 +138,7 @@ sub cgiapp_prerun { my ($download_mode, $filename_extension) = split(',', cgiapp_param('dm')); my $package = $run_mode; my @packages = split('::', $run_mode); - if (scalar(@packages) > 1) { + if (scalar @packages > 1) { $package = pop(@packages); $package = pop(@packages) if is_eq($package, $CURRENT_PACKAGE{RUN}); } @@ -200,9 +200,19 @@ sub APP_confirm { return __login($user, 2, _t('User not active!'), _t('Consult with your systems manager to activate your user')) if $user_data[5] eq 0; # Check if user is in the Active Directory: - my $ad = Authen::Simple::ActiveDirectory->new(host => CONFIG('LDAP_DOMAIN'), principal => CONFIG('LDAP_DOMAIN'), timeout => 20); - if (!$ad->authenticate($user, $pass)) { - # Unidentified user. Or is it a local user: + my $ad = undef; + if (!is_empty(CONFIG('AD_DOMAIN'))) { + if (!is_empty(CONFIG('AD_SERVER'))) { + $ad = Authen::Simple::ActiveDirectory->new(host => CONFIG('AD_SERVER'), principal => CONFIG('AD_DOMAIN'), timeout => 5); + $ad = undef if !$ad->authenticate($user, $pass); + } + if (!defined($ad)) { + $ad = Authen::Simple::ActiveDirectory->new(host => CONFIG('AD_DOMAIN'), principal => CONFIG('AD_DOMAIN'), timeout => 10); + $ad = undef if !$ad->authenticate($user, $pass); + } + } + # Check if user is local: + if (!defined($ad)) { my $passcrypt = __crypt_password($pass); # Unidentified user. Request the login again: return __login($user, 3) if !defined($user_data[1]) || $user_data[1] ne $passcrypt; diff --git a/Dam/Components/Actions/Sort.pm b/Dam/Components/Actions/Sort.pm index ba500e0..9d5ad8d 100644 --- a/Dam/Components/Actions/Sort.pm +++ b/Dam/Components/Actions/Sort.pm @@ -63,7 +63,7 @@ sub Action__html { if (!is_empty($$arg_ref{DEFAULT})) { my @default = split(' ', $$arg_ref{DEFAULT}); if (defined($list_columns{$default[0]}) && !defined($default[2])) { - my $dir = in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC'; + my $dir = defined($default[1]) && in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC'; $default = strval($default[0], ' ', $dir); } } @@ -106,7 +106,7 @@ sub Action__js { if (!is_empty($$arg_ref{DEFAULT})) { my @default = split(' ', $$arg_ref{DEFAULT}); if (defined($list_columns{$default[0]}) && !defined($default[2])) { - my $dir = in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC'; + my $dir = defined($default[1]) && in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC'; $default = strval($default[0], ' ', $dir); } } diff --git a/Dam/Components/Controls/MultiCheck.pm b/Dam/Components/Controls/MultiCheck.pm index cb64911..0af65fe 100644 --- a/Dam/Components/Controls/MultiCheck.pm +++ b/Dam/Components/Controls/MultiCheck.pm @@ -75,7 +75,7 @@ sub Control__html { __arguments($arg_ref); - my $multicheck_value = !is_report() && !is_empty($$arg_ref{DEFAULT}) ? $$arg_ref{DEFAULT} : strval_join(',', cgiapp_param($$arg_ref{ID})); + my $multicheck_value = !is_report() && !is_empty($$arg_ref{DEFAULT}) ? $$arg_ref{DEFAULT} : strval_join(',', cgiapp_multi($$arg_ref{ID})); my $form_group = 'form-group'; @@ -123,7 +123,7 @@ sub Get { $id = $ID_DEFAULT if is_empty($id); - return strval_join(',', cgiapp_param($id)); + return strval_join(',', cgiapp_multi($id)); } diff --git a/Dam/DamLogic.pm b/Dam/DamLogic.pm index 7875d54..688b52b 100644 --- a/Dam/DamLogic.pm +++ b/Dam/DamLogic.pm @@ -62,6 +62,7 @@ our @EXPORT = qw( User__has_access cgiapp_param + cgiapp_multi cgiapp_cookie cgiapp_upload cgiapp_uploadInfo @@ -360,7 +361,7 @@ sub Component__Get { my $error = $@; fatal($error, "\n", 'Form element "', $type, '" can not be loaded'); }; - return (scalar(@value) == 1 ? $value[0] : @value) if @value; + return (scalar @value == 1 ? $value[0] : @value) if @value; return undef; } @@ -515,7 +516,21 @@ sub User__has_access { sub cgiapp_param { - return RESERVED('CGIAPP')->query()->param(@_); + return scalar RESERVED('CGIAPP')->query()->param(@_); +} + + + +sub cgiapp_multi { + my @multi = (); + eval { + @multi = RESERVED('CGIAPP')->query()->multi_param(@_); + + 1; + } or do { + @multi = RESERVED('CGIAPP')->query()->param(@_); + }; + return @multi; } @@ -974,8 +989,8 @@ sub __filter_messages { my $REPORT_MESSAGES = strval('REPORT_', $arg{MESSAGES}); my $MESSAGES = RESERVED(strval('REF_', $REPORT_MESSAGES)); $arg{TMPL_FILTER}->param($REPORT_MESSAGES => strval( - !is_eq($arg{MESSAGES}, 'INFO') ? strval('', _t(strval($arg{MESSAGES}, scalar(@$MESSAGES) > 1 ? 'S!' : '!')), ' ') : '', - scalar(@$MESSAGES) == 1 ? $$MESSAGES[0] : strval('