diff options
Diffstat (limited to 'bin/login.pl')
-rwxr-xr-x | bin/login.pl | 354 |
1 files changed, 184 insertions, 170 deletions
diff --git a/bin/login.pl b/bin/login.pl index bf8a7745..be626d7d 100755 --- a/bin/login.pl +++ b/bin/login.pl @@ -8,9 +8,9 @@ # with permission. # # This file contains source code included with or based on SQL-Ledger which -# is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed -# under the GNU General Public License version 2 or, at your option, any later -# version. For a full list including contact information of contributors, +# is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed +# under the GNU General Public License version 2 or, at your option, any later +# version. For a full list including contact information of contributors, # maintainers, and copyright holders, see the CONTRIBUTORS file. # # Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork): @@ -34,7 +34,6 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #====================================================================== - 1; use DBI; use LedgerSMB::User; @@ -45,68 +44,69 @@ use LedgerSMB::Session; ## will need this later when session_destroy will be used #use LedgerSMB::Session; - $form = new Form; # For 1.3, this logic should be in LedgerSMB.pm -if ($form->{path}) { - - if ($form->{path} ne 'bin/lynx'){ $form->{path} = 'bin/mozilla';} +if ( $form->{path} ) { -} else { + if ( $form->{path} ne 'bin/lynx' ) { $form->{path} = 'bin/mozilla'; } - $form->{terminal} = "lynx"; +} +else { - if ($ENV{HTTP_USER_AGENT} !~ /lynx/i) { - $form->{terminal} = "mozilla"; - } + $form->{terminal} = "lynx"; - $form->{path} = "bin/$form->{terminal}"; + if ( $ENV{HTTP_USER_AGENT} !~ /lynx/i ) { + $form->{terminal} = "mozilla"; + } + $form->{path} = "bin/$form->{terminal}"; } -$locale = LedgerSMB::Locale->get_handle(${LedgerSMB::Sysconfig::language}) or - $form->error(__FILE__.':'.__LINE__.": Locale not loaded: $!\n"); +$locale = LedgerSMB::Locale->get_handle( ${LedgerSMB::Sysconfig::language} ) + or $form->error( __FILE__ . ':' . __LINE__ . ": Locale not loaded: $!\n" ); $locale->encoding('UTF-8'); $form->{charset} = 'UTF-8'; + #$form->{charset} = $locale->encoding; # customization -if (-f "bin/custom/$form->{script}") { - eval { require "bin/custom/$form->{script}"; }; - $form->error(__FILE__.':'.__LINE__.': '.$@) if ($@); +if ( -f "bin/custom/$form->{script}" ) { + eval { require "bin/custom/$form->{script}"; }; + $form->error( __FILE__ . ':' . __LINE__ . ': ' . $@ ) if ($@); } # window title bar, user info -$form->{titlebar} = "LedgerSMB ".$locale->text('Version'). " $form->{version}"; +$form->{titlebar} = + "LedgerSMB " . $locale->text('Version') . " $form->{version}"; -if ($form->{action}) { - $form->{titlebar} .= " - $myconfig{name} - $myconfig{dbname}"; - &{ $form->{action} }; +if ( $form->{action} ) { + $form->{titlebar} .= " - $myconfig{name} - $myconfig{dbname}"; + &{ $form->{action} }; -} else { - &login_screen; } - +else { + &login_screen; +} 1; - sub login_screen { - $form->{stylesheet} = "ledger-smb.css"; - $form->{favicon} = "favicon.ico"; + $form->{stylesheet} = "ledger-smb.css"; + $form->{favicon} = "favicon.ico"; - $form->{endsession} = 1; + $form->{endsession} = 1; - if ($form->{login}) { - $sf = q|function sf() { document.login.password.focus(); }|; - } else { - $sf = q|function sf() { document.login.login.focus(); }|; - } + if ( $form->{login} ) { + $sf = q|function sf() { document.login.password.focus(); }|; + } + else { + $sf = q|function sf() { document.login.login.focus(); }|; + } - my $headeradd = qq| + my $headeradd = qq| <script language="JavaScript" type="text/javascript"> <!-- var agt = navigator.userAgent.toLowerCase(); @@ -128,9 +128,9 @@ sub login_screen { // End --> </script>|; - $form->header(1, $headeradd); + $form->header( 1, $headeradd ); - print qq| + print qq| <body class="login" onload="jsp(); sf();"> <br /><br /> @@ -139,7 +139,9 @@ sub login_screen { <tr> <td class="login" align="center"> <a href="http://www.ledgersmb.org/" target="_top"><img src="ledger-smb.png" width="200" heith="100" border="0" alt="LedgerSMB Logo" /></a> - <h1 class="login" align="center">|.$locale->text('Version').qq| $form->{version}</h1> + <h1 class="login" align="center">| + . $locale->text('Version') + . qq| $form->{version}</h1> <p> <form method="post" action="login.pl" name="login"> <table width="100%"> @@ -147,11 +149,11 @@ sub login_screen { <td align="center"> <table> <tr> - <th align="right">|.$locale->text('Name').qq|</th> + <th align="right">| . $locale->text('Name') . qq|</th> <td><input class="login" name="login" size="30" value="$form->{login}" /></td> </tr> <tr> - <th align="right">|.$locale->text('Password').qq|</th> + <th align="right">| . $locale->text('Password') . qq|</th> <td><input class="login" type="password" name="password" size="30" /></td> </tr> </table> @@ -161,31 +163,32 @@ sub login_screen { </table> <input type="hidden" name="path" value="$form->{path}" /> <input type="hidden" name="js" value="$form->{js}" /> - <button type="submit" name="action" value="login">|.$locale->text('Login').qq|</button> + <button type="submit" name="action" value="login">| + . $locale->text('Login') + . qq|</button> </form> </p> </td> </tr> </table> <p><a href="admin.pl" - >|.$locale->text("Administrative login").qq|</a></p> + >| . $locale->text("Administrative login") . qq|</a></p> </center> </body> </html>|; } - sub selectdataset { - my ($login) = @_; + my ($login) = @_; - if (-f "css/ledger-smb.css") { - $form->{stylesheet} = "ledger-smb.css"; - } + if ( -f "css/ledger-smb.css" ) { + $form->{stylesheet} = "ledger-smb.css"; + } - $form->header(1); + $form->header(1); - print qq| + print qq| <body class="login" onload="document.forms[0].password.focus()" /> <br /><br /> <center> @@ -193,7 +196,9 @@ sub selectdataset { <tr> <td class="login" align="center"> <a href="http://www.ledgersmb.org/" target="_top"><img src="ledger-smb.png" width="100" heith="100" border="0" alt="LedgerSMB Logo" /></a> - <h1 class="login" align="center">|.$locale->text('Version').qq| $form->{version}</h1> + <h1 class="login" align="center">| + . $locale->text('Version') + . qq| $form->{version}</h1> <p> <form method="post" action="$form->{script}"> <input type="hidden" name="beenthere" value="1" /> @@ -204,29 +209,32 @@ sub selectdataset { <td align="center"> <table> <tr> - <th align="right">|.$locale->text('Name').qq|</th> + <th align="right">| . $locale->text('Name') . qq|</th> <td>$form->{login}</td> </tr> <tr> - <th align="right">|.$locale->text('Password').qq|</th> + <th align="right">| . $locale->text('Password') . qq|</th> <td><input class="login" type="password" name="password" size="30" value="$form->{password}" /></td> </tr> <tr> - <th align="right">|.$locale->text('Company').qq|</th> + <th align="right">| . $locale->text('Company') . qq|</th> <td>|; - $checked = "checked"; - foreach $login (sort { $login{$a} cmp $login{$b} } keys %{ $login }) { - print qq| <br /><input class="login" type="radio" name="login" value="$login" $checked>$login{$login} |; - $checked = ""; - } + $checked = "checked"; + foreach $login ( sort { $login{$a} cmp $login{$b} } keys %{$login} ) { + print +qq| <br /><input class="login" type="radio" name="login" value="$login" $checked>$login{$login} |; + $checked = ""; + } - print qq| + print qq| </td> </tr> </table> <br /> - <button type="submit" name="action" value="login">|.$locale->text('Login').qq|</button> + <button type="submit" name="action" value="login">| + . $locale->text('Login') + . qq|</button> </td> </tr> </table> @@ -240,128 +248,134 @@ sub selectdataset { } - sub login { - $form->{stylesheet} = "ledger-smb.css"; - $form->{favicon} = "favicon.ico"; - - $form->error(__FILE__.':'.__LINE__.': '.$locale->text('You did not enter a name!')) unless ($form->{login}); - - - #this needs to be done via db - #if (! $form->{beenthere}) { - # open(FH, '<', "${LedgerSMB::Sysconfig::memberfile}") or $form->error(__FILE__.':'.__LINE__.": $memberfile : $!"); - # @a = <FH>; - # close(FH); - # - # foreach $item (@a) { - # - # if ($item =~ /^\[(.*?)\]/) { - # $login = $1; - # $found = 1; - # } - # - # if ($item =~ /^company=/) { - # if ($login =~ /$form->{login}\@/ && $found) { - # ($null, $name) = split /=/, $item, 2; - # $login{$login} = $name; - # } - # $found = 0; - # } - # } - # - # if (keys %login > 1) { - # &selectdataset(\%login); - # exit; - # } - #} - - - if (!${LedgerSMB::Sysconfig::GLOBALDBH}){ - $locale->text("No GlobalDBH Configured or Could not Connect"); - } - $user = LedgerSMB::User->new($form->{login}); - - # if we get an error back, bale out - if (($errno = $user->login(\%$form)) <= -1) { - - $errno *= -1; - $err[1] = $locale->text('Access Denied!'); - $err[2] = $locale->text('Incorrect Dataset version!'); - $err[3] = $locale->text('Dataset is newer than version!'); - - if ($errno == 4) { - # upgrade dataset and log in again - - #locking needs to be done via db function - #open FH, '>', "${LedgerSMB::Sysconfig::userspath}/nologin" or $form->error($!); - - for (qw(dbname dbhost dbport dbdriver dbuser dbpasswd)) { $form->{$_} = $user->{$_} } - - $form->{dbupdate} = "db$user->{dbname}"; - $form->{$form->{dbupdate}} = 1; - - $form->header; - print qq|<body>|; - print $locale->text('Upgrading to Version [_1] ...', $form->{version}); - - # required for Oracle - $form->{dbdefault} = $sid; - - $user->dbupdate(\%$form); - - # remove lock - #unlink "${LedgerSMB::Sysconfig::userspath}/nologin"; - - print $locale->text('done'); - - print "<p><a href=\"menu.pl?login=$form->{login}&sessionid=$form->{sessionid}&path=$form->{path}&action=display&main=company_logo&js=$form->{js}>\">".$locale->text('Continue')."</a>"; - print qq|</body>|; - exit; - } + $form->{stylesheet} = "ledger-smb.css"; + $form->{favicon} = "favicon.ico"; + + $form->error( __FILE__ . ':' . __LINE__ . ': ' + . $locale->text('You did not enter a name!') ) + unless ( $form->{login} ); + +#this needs to be done via db +#if (! $form->{beenthere}) { +# open(FH, '<', "${LedgerSMB::Sysconfig::memberfile}") or $form->error(__FILE__.':'.__LINE__.": $memberfile : $!"); +# @a = <FH>; +# close(FH); +# +# foreach $item (@a) { +# +# if ($item =~ /^\[(.*?)\]/) { +# $login = $1; +# $found = 1; +# } +# +# if ($item =~ /^company=/) { +# if ($login =~ /$form->{login}\@/ && $found) { +# ($null, $name) = split /=/, $item, 2; +# $login{$login} = $name; +# } +# $found = 0; +# } +# } +# +# if (keys %login > 1) { +# &selectdataset(\%login); +# exit; +# } +#} - $form->error(__FILE__.':'.__LINE__.': '.$err[$errno]); - } + if ( !${LedgerSMB::Sysconfig::GLOBALDBH} ) { + $locale->text("No GlobalDBH Configured or Could not Connect"); + } + $user = LedgerSMB::User->new( $form->{login} ); - # made it this far, setup callback for the menu - $form->{callback} = "menu.pl?action=display&password=$form->{password}"; - for (qw(login path js)) { $form->{callback} .= "&$_=$form->{$_}" } + # if we get an error back, bale out + if ( ( $errno = $user->login( \%$form ) ) <= -1 ) { - # check for recurring transactions - if ($user->{acs} !~ /Recurring Transactions/) { + $errno *= -1; + $err[1] = $locale->text('Access Denied!'); + $err[2] = $locale->text('Incorrect Dataset version!'); + $err[3] = $locale->text('Dataset is newer than version!'); - if ($user->check_recurring(\%$form)) { - $form->{callback} .= "&main=recurring_transactions"; - } else { - $form->{callback} .= "&main=company_logo"; - } + if ( $errno == 4 ) { - } else { + # upgrade dataset and log in again - if ($user->{role} eq 'user') { - $form->{callback} .= "&main=company_logo"; - } else { +#locking needs to be done via db function +#open FH, '>', "${LedgerSMB::Sysconfig::userspath}/nologin" or $form->error($!); - if ($user->check_recurring(\%$form)) { - $form->{callback} .= "&main=recurring_transactions"; - } else { - $form->{callback} .= "&main=company_logo"; - } - } - } + for (qw(dbname dbhost dbport dbdriver dbuser dbpasswd)) { + $form->{$_} = $user->{$_}; + } - Session::session_create($form); - $form->redirect; + $form->{dbupdate} = "db$user->{dbname}"; + $form->{ $form->{dbupdate} } = 1; -} + $form->header; + print qq|<body>|; + print $locale->text( 'Upgrading to Version [_1] ...', + $form->{version} ); + # required for Oracle + $form->{dbdefault} = $sid; + $user->dbupdate( \%$form ); + + # remove lock + #unlink "${LedgerSMB::Sysconfig::userspath}/nologin"; + + print $locale->text('done'); + + print +"<p><a href=\"menu.pl?login=$form->{login}&sessionid=$form->{sessionid}&path=$form->{path}&action=display&main=company_logo&js=$form->{js}>\">" + . $locale->text('Continue') . "</a>"; + print qq|</body>|; + exit; + } + + $form->error( __FILE__ . ':' . __LINE__ . ': ' . $err[$errno] ); + } + + # made it this far, setup callback for the menu + $form->{callback} = "menu.pl?action=display&password=$form->{password}"; + for (qw(login path js)) { $form->{callback} .= "&$_=$form->{$_}" } + + # check for recurring transactions + if ( $user->{acs} !~ /Recurring Transactions/ ) { + + if ( $user->check_recurring( \%$form ) ) { + $form->{callback} .= "&main=recurring_transactions"; + } + else { + $form->{callback} .= "&main=company_logo"; + } + + } + else { + + if ( $user->{role} eq 'user' ) { + $form->{callback} .= "&main=company_logo"; + } + else { + + if ( $user->check_recurring( \%$form ) ) { + $form->{callback} .= "&main=recurring_transactions"; + } + else { + $form->{callback} .= "&main=company_logo"; + } + } + } + + Session::session_create($form); + $form->redirect; -sub logout { - $form->{callback} = ""; - $form->{endsession} = 1; - Session::session_destroy($form); - $form->redirect; } +sub logout { + $form->{callback} = ""; + $form->{endsession} = 1; + Session::session_destroy($form); + $form->redirect; +} |