X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=sql-ledger%2Fbin%2Fmozilla%2Fadmin.pl;fp=sql-ledger%2Fbin%2Fmozilla%2Fadmin.pl;h=8a4daba786bbfe27a4ebe3daf2267e1230337c72;hp=39247b541f2554d6db30993d193e5aa7280fc389;hb=32306b5f8ffe4ce594409aa6e89626740b225a39;hpb=52072fcd26f2faf57923f598c358e7f47c4e2643
diff --git a/sql-ledger/bin/mozilla/admin.pl b/sql-ledger/bin/mozilla/admin.pl
index 39247b541..8a4daba78 100644
--- a/sql-ledger/bin/mozilla/admin.pl
+++ b/sql-ledger/bin/mozilla/admin.pl
@@ -39,6 +39,11 @@ $locale = new Locale $language, "admin";
eval { require DBI; };
$form->error($locale->text('DBI not installed!')) if ($@);
+$form->{stylesheet} = "sql-ledger.css";
+$form->{favicon} = "favicon.ico";
+$form->{timeout} = 600;
+
+require "$form->{path}/pw.pl";
# customization
if (-f "$form->{path}/custom_$form->{script}") {
@@ -47,22 +52,11 @@ if (-f "$form->{path}/custom_$form->{script}") {
}
-if (-f "css/sql-ledger.css") {
- $form->{stylesheet} = "sql-ledger.css";
-}
-
-
if ($form->{action}) {
$subroutine = $locale->findsub($form->{action});
-
- if ($subroutine eq 'login') {
- if ($form->{rpw}) {
- $form->{rpw} = crypt $form->{rpw}, "ro";
- }
- }
-
- &check_password;
+
+ &check_password unless $form->{action} eq 'logout';
&$subroutine;
@@ -80,7 +74,7 @@ if ($form->{action}) {
password=
|;
- close(FH);
+ close FH;
}
&adminlogin;
@@ -94,32 +88,39 @@ password=
sub adminlogin {
$form->{title} = qq|SQL-Ledger $form->{version} |.$locale->text('Administration');
-
- $form->header;
- print qq|
-
+ $form->{login} = "root login";
+ $form->header(1);
+
+ print qq|
+
+
|.$locale->text('Version').qq| $form->{version} |.$locale->text('Administration').qq|
-
SQL-Ledger |.$locale->text('website').qq|
@@ -133,8 +134,6 @@ sub adminlogin {
}
-
-
sub login {
&list_users;
@@ -142,6 +141,13 @@ sub login {
}
+sub logout {
+
+ $form->{callback} = "$form->{script}?path=$form->{path}&endsession=1";
+ $form->redirect($locale->text('You are logged out'));
+
+}
+
sub add_user {
@@ -154,7 +160,9 @@ sub add_user {
if (-f "css/sql-ledger.css") {
$myconfig->{stylesheet} = "sql-ledger.css";
}
- $myconfig->{vclimit} = 200;
+ $myconfig->{vclimit} = 1000;
+ $myconfig->{menuwidth} = 155;
+ $myconfig->{timeout} = 3600;
&form_header;
&form_footer;
@@ -183,10 +191,10 @@ sub form_footer {
print qq|
-
-
+
+
{path}>
-
{rpw}>
+
{sessionid}>
$delete
@@ -202,10 +210,17 @@ $delete
sub list_users {
- $form->error("$memberfile : ".$locale->text('locked!')) if (-f "${memberfile}.LCK");
-
open(FH, "$memberfile") or $form->error("$memberfile : $!");
-
+
+ $nologin = qq|
+
|;
+
+ if (-e "$userspath/nologin") {
+ $nologin = qq|
+
|;
+ }
+
+
while (
) {
chop;
@@ -223,6 +238,7 @@ sub list_users {
close(FH);
# type=submit $locale->text('Pg Database Administration')
+# type=submit $locale->text('PgPP Database Administration')
# type=submit $locale->text('Oracle Database Administration')
foreach $item (User->dbdrivers) {
@@ -242,6 +258,7 @@ sub list_users {
$form->{title} = "SQL-Ledger ".$locale->text('Accounting')." ".$locale->text('Administration');
+ $form->{login} = "root login";
$form->header;
print qq|
@@ -267,7 +284,7 @@ sub list_users {
|;
foreach $key (sort keys %member) {
- $href = "$script?action=edit&login=$key&path=$form->{path}&root=$form->{root}&rpw=$form->{rpw}";
+ $href = "$script?action=edit&login=$key&path=$form->{path}&sessionid=$form->{sessionid}";
$href =~ s/ /%20/g;
$member{$key}{templates} =~ s/^$templates\///;
@@ -303,13 +320,15 @@ print qq|
{path}>
- {rpw}>
-
+ {sessionid}>
$dbdrivers
+$nologin
+
+
@@ -317,35 +336,6 @@ $dbdrivers
|.$locale->text('To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.').qq|
-
-
-
-
|;
@@ -354,7 +344,6 @@ $dbdrivers
-
sub form_header {
# if there is a login, get user
@@ -376,17 +365,18 @@ sub form_header {
$dateformat .= ($item eq $myconfig->{dateformat}) ? "$item\n" : " $item\n";
}
- foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00)) {
+ foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00 1'000.00)) {
$numberformat .= ($item eq $myconfig->{numberformat}) ? " $item\n" : " $item\n";
}
%countrycodes = User->country_codes;
$countrycodes = "";
+
foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} } keys %countrycodes) {
$countrycodes .= ($myconfig->{countrycode} eq $key) ? " $countrycodes{$key}" : " $countrycodes{$key}";
}
- $countrycodes = qq| American English\n$countrycodes|;
+ $countrycodes = qq| English\n$countrycodes|;
# is there a templates basedir
if (! -d "$templates") {
@@ -398,13 +388,13 @@ sub form_header {
closedir TEMPLATEDIR;
@allhtml = sort grep /\.html/, @all;
- @alldir = grep !/\.(html|tex)$/, @all;
+ @alldir = grep !/\.(html|tex|txt)$/, @all;
@allhtml = reverse grep !/Default/, @allhtml;
push @allhtml, 'Default';
@allhtml = reverse @allhtml;
- foreach $item (@alldir) {
+ foreach $item (sort @alldir) {
if ($item eq $myconfig->{templates}) {
$usetemplates .= qq| $item\n|;
} else {
@@ -424,8 +414,42 @@ sub form_header {
}
}
+ opendir CSS, "css/.";
+ @all = grep /.*\.css$/, readdir CSS;
+ closedir CSS;
+
+ foreach $item (@all) {
+ if ($item eq $myconfig->{stylesheet}) {
+ $selectstylesheet .= qq| $item\n|;
+ } else {
+ $selectstylesheet .= qq| $item\n|;
+ }
+ }
+ $selectstylesheet .= " \n";
+
+ if (%printer && $latex) {
+ $selectprinter = " \n";
+ foreach $item (sort keys %printer) {
+ if ($myconfig->{printer} eq $item) {
+ $selectprinter .= qq| $item\n|;
+ } else {
+ $selectprinter .= qq| $item\n|;
+ }
+ }
+
+ $printer = qq|
+
+ |.$locale->text('Printer').qq|
+ $selectprinter
+
+|;
+
+ }
+ $user = $form->{login};
+ $form->{login} = "root login";
$form->header;
+ $form->{login} = $user;
print qq|
@@ -444,7 +468,7 @@ sub form_header {
|.$locale->text('Password').qq|
- {password}>
+ {password}>
{password}>
@@ -492,6 +516,10 @@ sub form_header {
+ |.$locale->text('Menu Width').qq|
+
+
+
|.$locale->text('Language').qq|
$countrycodes
@@ -500,17 +528,15 @@ sub form_header {
- |.$locale->text('Stylesheet').qq|
-
-
-
- |.$locale->text('Printer').qq|
-
+ |.$locale->text('Session Timeout').qq|
+
+
- |.$locale->text('Ship via').qq|
-
+ |.$locale->text('Stylesheet').qq|
+ $selectstylesheet
+ $printer
|.$locale->text('Use Templates').qq|
$usetemplates
@@ -550,20 +576,20 @@ sub form_header {
|.$locale->text('Driver').qq|
$item
|.$locale->text('Host').qq|
- {"${item}_dbhost"}>
+ {"${item}_dbhost"}>
|;
- if ($item eq 'Pg') {
+ if ($item =~ /Pg/) {
print qq|
|.$locale->text('Dataset').qq|
- {Pg_dbname}>
+ {"${item}_dbname"}>
|.$locale->text('Port').qq|
- {Pg_dbport}>
+ {"${item}_dbport"}>
|.$locale->text('User').qq|
- {"${item}_dbuser"}>
+ {"${item}_dbuser"}>
|.$locale->text('Password').qq|
{"${item}_dbpasswd"}>
|;
@@ -575,11 +601,11 @@ sub form_header {
SID
{Oracle_sid}>
|.$locale->text('Port').qq|
- {Oracle_dbport}>
+
|.$locale->text('Dataset').qq|
- {"${item}_dbuser"}>
+ {"${item}_dbuser"}>
|.$locale->text('Password').qq|
{"${item}_dbpasswd"}>
@@ -612,7 +638,7 @@ sub form_header {
close(FH);
foreach $item (@a) {
- next unless $item =~ /\[/;
+ next unless $item =~ /\[\w+/;
next if $item =~ /\#/;
$item =~ s/(\[|\])//g;
@@ -630,14 +656,23 @@ sub form_header {
}
- $admincheck = "checked" if $myconfig->{admin};
+ %role = ( 'admin' => $locale->text('Administrator'),
+ 'user' => $locale->text('User'),
+ 'manager' => $locale->text('Manager')
+
+ );
+
+ $selectrole = "";
+ foreach $item (qw(user admin manager)) {
+ $selectrole .= ($myconfig->{role} eq $item) ? "$role{$item}\n" : " $role{$item}\n";
+ }
print qq|
|.$locale->text('Access Control').qq|
- |.$locale->text('Administrator').qq|
+ $selectrole
|;
@@ -695,11 +730,8 @@ sub form_header {
-
-
-
-
+
|;
}
@@ -712,6 +744,8 @@ sub save {
# no spaces allowed in login name
($form->{login}) = split / /, $form->{login};
+
+ $form->isblank("login", $locale->text('Login name missing!'));
# check for duplicates
if (!$form->{edit}) {
@@ -722,11 +756,6 @@ sub save {
}
}
- # does stylesheet exist
- if ($form->{userstylesheet}) {
- $form->error($locale->text('Stylesheet').": css/$form->{userstylesheet} ".$locale->text('does not exist')) unless (-f "css/$form->{userstylesheet}");
- }
-
# no spaces allowed in directories
($form->{newtemplates}) = split / /, $form->{newtemplates};
@@ -736,7 +765,6 @@ sub save {
$form->{templates} = ($form->{usetemplates}) ? $form->{usetemplates} : $form->{login};
}
-
# is there a basedir
if (! -d "$templates") {
$form->error($locale->text('Directory').": $templates ".$locale->text('does not exist'));
@@ -760,38 +788,33 @@ sub save {
}
delete $form->{$item};
}
-
+
# check which database was filled in
+
+ $form->{dbhost} = $form->{"$form->{dbdriver}_dbhost"};
+ $form->{dbport} = $form->{"$form->{dbdriver}_dbport"};
+ $form->{dbpasswd} = $form->{"$form->{dbdriver}_dbpasswd"};
+ $form->{dbuser} = $form->{"$form->{dbdriver}_dbuser"};
+ $form->{dbname} = $form->{"$form->{dbdriver}_dbname"};
+
if ($form->{dbdriver} eq 'Oracle') {
$form->{sid} = $form->{Oracle_sid}, ;
- $form->{dbhost} = $form->{Oracle_dbhost}, ;
- $form->{dbport} = $form->{Oracle_dbport};
- $form->{dbpasswd} = $form->{Oracle_dbpasswd};
- $form->{dbuser} = $form->{Oracle_dbuser};
- $form->{dbname} = $form->{Oracle_dbuser};
$form->isblank("dbhost", $locale->text('Hostname missing!'));
$form->isblank("dbport", $locale->text('Port missing!'));
$form->isblank("dbuser", $locale->text('Dataset missing!'));
}
- if ($form->{dbdriver} eq 'Pg') {
- $form->{dbhost} = $form->{Pg_dbhost};
- $form->{dbport} = $form->{Pg_dbport};
- $form->{dbpasswd} = $form->{Pg_dbpasswd};
- $form->{dbuser} = $form->{Pg_dbuser};
- $form->{dbname} = $form->{Pg_dbname};
-
+ if ($form->{dbdriver} =~ /Pg/) {
$form->isblank("dbname", $locale->text('Dataset missing!'));
$form->isblank("dbuser", $locale->text('Database User missing!'));
}
- # set admin
- $form->{admin} = "" unless $form->{admin};
-
foreach $item (keys %{$form}) {
$myconfig->{$item} = $form->{$item};
}
+ $myconfig->{password} = $form->{new_password} if $form->{new_password} ne $form->{old_password};
+
delete $myconfig->{stylesheet};
if ($form->{userstylesheet}) {
$myconfig->{stylesheet} = $form->{userstylesheet};
@@ -808,8 +831,8 @@ sub save {
umask(007);
# copy templates to the directory
- opendir TEMPLATEDIR, "$templates/." or $form-error("$templates : $!");
- @templates = grep /$form->{mastertemplates}.*?\.(html|tex)$/, readdir TEMPLATEDIR;
+ opendir TEMPLATEDIR, "$templates/." or $form->error("$templates : $!");
+ @templates = grep /$form->{mastertemplates}.*?\.(html|tex|txt)$/, readdir TEMPLATEDIR;
closedir TEMPLATEDIR;
foreach $file (@templates) {
@@ -838,11 +861,14 @@ sub delete {
$form->{templates} = ($form->{templates}) ? "$templates/$form->{templates}" : "$templates/$form->{login}";
- $form->error("$memberfile : ".$locale->text('locked!')) if (-f ${memberfile}.LCK);
+ $form->error("$memberfile ".$locale->text('locked!')) if (-f ${memberfile}.LCK);
open(FH, ">${memberfile}.LCK") or $form->error("${memberfile}.LCK : $!");
close(FH);
- open(CONF, "+<$memberfile") or $form->error("$memberfile : $!");
+ if (! open(CONF, "+<$memberfile")) {
+ unlink "${memberfile}.LCK";
+ $form->error("$memberfile : $!");
+ }
@config = ;
@@ -851,6 +877,8 @@ sub delete {
while ($line = shift @config) {
+ chop $line;
+
if ($line =~ /^\[/) {
last if ($line =~ /\[$form->{login}\]/);
$login = &login_name($line);
@@ -860,25 +888,31 @@ sub delete {
$user{$login} = &get_value($line);
}
- print CONF $line;
+ print CONF "$line\n";
}
# remove everything up to next login or EOF
# and save template variable
while ($line = shift @config) {
- if ($line =~ /^templates=/) {
- $templatedir = &get_value($line);
- }
+
+ chop $line;
+
+ ($key, $value) = split /=/, $line, 2;
+ $myconfig{$key} = $value;
+
last if ($line =~ /^\[/);
}
# this one is either the next login or EOF
- print CONF $line;
+ print CONF "$line\n";
$login = &login_name($line);
while ($line = shift @config) {
+
+ chop $line;
+
if ($line =~ /^\[/) {
$login = &login_name($line);
}
@@ -887,7 +921,7 @@ sub delete {
$user{$login} = &get_value($line);
}
- print CONF $line;
+ print CONF "$line\n";
}
close(CONF);
@@ -895,9 +929,11 @@ sub delete {
# scan %user for $templatedir
foreach $login (keys %user) {
- last if ($found = ($templatedir eq $user{$login}));
+ last if ($found = ($myconfig{templates} eq $user{$login}));
}
+ map { $form->{$_} = $myconfig{$_} } keys %myconfig;
+
# if found keep directory otherwise delete
if (!$found) {
# delete it if there is a template directory
@@ -905,13 +941,16 @@ sub delete {
if (-d "$dir") {
unlink <$dir/*.html>;
unlink <$dir/*.tex>;
+ unlink <$dir/*.txt>;
rmdir "$dir";
}
}
# delete config file for user
unlink "$userspath/$form->{login}.conf";
-
+
+ User::delete_login("", \%$form);
+
$form->redirect($locale->text('User deleted!'));
}
@@ -930,10 +969,10 @@ sub login_name {
sub get_value {
my $line = shift;
- my ($null, $value) = split(/=/, $line, 2);
+ my ($null, $value) = split /=/, $line, 2;
# remove comments
- $value =~ s/\s#.*//g;
+ $value =~ s/^\s*#.*//g;
# remove any trailing whitespace
$value =~ s/^\s*(.*?)\s*$/$1/;
@@ -946,22 +985,42 @@ sub get_value {
sub change_admin_password {
$form->{title} = qq|SQL-Ledger |.$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Change Admin Password');
-
+
+ $form->{login} = "root login";
$form->header;
print qq|
-
-|.$locale->text('Change Admin Password').qq|
-