From ac5b087ea2d9ba7428d367aaeb288534158fee9a Mon Sep 17 00:00:00 2001 From: christopherm Date: Fri, 1 Sep 2006 01:16:38 +0000 Subject: Initial Import git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/ledger-smb@1 4979c152-3d1c-0410-bac9-87ea11338e46 --- bin/mozilla/login.pl | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100755 bin/mozilla/login.pl (limited to 'bin/mozilla/login.pl') diff --git a/bin/mozilla/login.pl b/bin/mozilla/login.pl new file mode 100755 index 00000000..6d690984 --- /dev/null +++ b/bin/mozilla/login.pl @@ -0,0 +1,340 @@ +#===================================================================== +# LedgerSMB +# Small Medium Business Accounting software +# +# See COPYRIGHT file for copyright information +#====================================================================== +# +# This file has NOT undergone whitespace cleanup. +# +#====================================================================== +# +# login frontend +# +####################################################################### + + +use DBI; +use LedgerSMB::User; +use LedgerSMB::Form; +use LedgerSMB::Session; + + +$form = new Form; + + +$locale = new Locale $language, "login"; +$form->{charset} = $locale->{charset}; + +# customization +if (-f "$form->{path}/custom_$form->{script}") { + eval { require "$form->{path}/custom_$form->{script}"; }; + $form->error($@) if ($@); +} + +# per login customization +if (-f "$form->{path}/$form->{login}_$form->{script}") { + eval { require "$form->{path}/$form->{login}_$form->{script}"; }; + $form->error($@) if ($@); +} + +# window title bar, user info +$form->{titlebar} = "LedgerSMB ".$locale->text('Version'). " $form->{version}"; + +if ($form->{action}) { + $form->{titlebar} .= " - $myconfig{name} - $myconfig{dbname}"; + &{ $locale->findsub($form->{action}) }; +} else { + &login_screen; +} + + +1; + + +sub login_screen { + + $form->{stylesheet} = "sql-ledger.css"; + $form->{favicon} = "favicon.ico"; + + $form->{endsession} = 1; + $form->header(1); + + if ($form->{login}) { + $sf = qq|function sf() { document.login.password.focus(); }|; + } else { + $sf = qq|function sf() { document.login.login.focus(); }|; + } + + print qq| + +|; + + print qq| + + + +
+
+
+ +
+ + + + + + + + +|; + +} + + +sub selectdataset { + my ($login) = @_; + + if (-f "css/sql-ledger.css") { + $form->{stylesheet} = "sql-ledger.css"; + } + + $form->header(1); + + print qq| + + +
+
+
+ +
+ + + + + + + + +|; + + +} + + +sub login { + + $form->{stylesheet} = "sql-ledger.css"; + $form->{favicon} = "favicon.ico"; + + $form->error($locale->text('You did not enter a name!')) unless ($form->{login}); + + if (! $form->{beenthere}) { + open(FH, "$memberfile") or $form->error("$memberfile : $!"); + @a = ; + 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; + } + } + + + $user = new User $memberfile, $form->{login}; + + # if we get an error back, bale out + if (($errno = $user->login(\%$form, $userspath)) <= -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 + open FH, ">$userspath/nologin" or $form->error($!); + + for (qw(dbname dbhost dbport dbdriver dbuser dbpasswd)) { $form->{$_} = $user->{$_} } + + $form->{dbpasswd} = unpack 'u', $form->{dbpasswd}; + + $form->{dbupdate} = "db$user->{dbname}"; + $form->{$form->{dbupdate}} = 1; + + $form->header; + print $locale->text('Upgrading to Version')." $form->{version} ... "; + + # required for Oracle + $form->{dbdefault} = $sid; + + $user->dbupdate(\%$form); + + # remove lock file + unlink "$userspath/nologin"; + + print $locale->text('done'); + + print "

{login}&sessionid=$form->{sessionid}&path=$form->{path}&action=display&main=company_logo&js=$form->{js}>".$locale->text('Continue').""; + + exit; + } + + $form->error($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"; + } + } + } + + $form->redirect; + +} + + + +sub logout { + + $form->{callback} = "$form->{script}?path=$form->{path}&login=$form->{login}"; + + $form->{endsession} = 1; + + $form->redirect; + +} + + -- cgit v1.2.3