#===================================================================== # SQL-Ledger Accounting # Copyright (c) 2002 # # Author: Dieter Simader # Email: dsimader@sql-ledger.org # Web: http://www.sql-ledger.org # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #====================================================================== # # setup module # add/edit/delete users # #====================================================================== $menufile = "menu.ini"; use SL::Form; use SL::User; $form = new Form; $locale = new Locale $language, "admin"; eval { require DBI; }; $form->error($locale->text('DBI not installed!')) if ($@); # customization if (-f "$form->{path}/custom_$form->{script}") { eval { require "$form->{path}/custom_$form->{script}"; }; $form->error($@) if ($@); } 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; &$subroutine; } else { # if there are no drivers bail out $form->error($locale->text('No Database Drivers available!')) unless (User->dbdrivers); # create memberfile if (! -f $memberfile) { open(FH, ">$memberfile") or $form->error("$memberfile : $!"); print FH qq|# SQL-Ledger Accounting members [root login] password= |; close(FH); } &adminlogin; } 1; # end sub adminlogin { $form->{title} = qq|SQL-Ledger $form->{version} |.$locale->text('Administration'); $form->header; print qq|

|.$locale->text('Version').qq| $form->{version}

|.$locale->text('Administration').qq|

{path}>
|.$locale->text('Password').qq|
SQL-Ledger |.$locale->text('website').qq|
|; } sub login { &list_users; } sub add_user { $form->{title} = "SQL-Ledger ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Add User'); $form->{Oracle_sid} = $sid; $form->{Oracle_dbport} = '1521'; $form->{Oracle_dbhost} = `hostname`; if (-f "css/sql-ledger.css") { $myconfig->{stylesheet} = "sql-ledger.css"; } $myconfig->{vclimit} = 200; &form_header; &form_footer; } sub edit { $form->{title} = "SQL-Ledger ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Edit User'); $form->{edit} = 1; &form_header; &form_footer; } sub form_footer { if ($form->{edit}) { $delete = qq| |; } print qq| {path}> {rpw}> $delete |; } sub list_users { $form->error("$memberfile : ".$locale->text('locked!')) if (-f "${memberfile}.LCK"); open(FH, "$memberfile") or $form->error("$memberfile : $!"); while () { chop; if (/^\[.*\]/) { $login = $_; $login =~ s/(\[|\])//g; } if (/^(name=|company=|templates=|dbuser=|dbdriver=|dbname=|dbhost=)/) { chop ($var = $&); ($null, $member{$login}{$var}) = split /=/, $_, 2; } } close(FH); # type=submit $locale->text('Pg Database Administration') # type=submit $locale->text('Oracle Database Administration') foreach $item (User->dbdrivers) { $dbdrivers .= qq||; } $column_header{login} = qq||.$locale->text('Login').qq||; $column_header{name} = qq||.$locale->text('Name').qq||; $column_header{company} = qq||.$locale->text('Company').qq||; $column_header{dbdriver} = qq||.$locale->text('Driver').qq||; $column_header{dbhost} = qq||.$locale->text('Host').qq||; $column_header{dataset} = qq||.$locale->text('Dataset').qq||; $column_header{templates} = qq||.$locale->text('Templates').qq||; @column_index = qw(login name company dbdriver dbhost dataset templates); $form->{title} = "SQL-Ledger ".$locale->text('Accounting')." ".$locale->text('Administration'); $form->header; print qq|
{script}>
$form->{title}
|; map { print "$column_header{$_}\n" } @column_index; print qq| |; foreach $key (sort keys %member) { $href = "$script?action=edit&login=$key&path=$form->{path}&root=$form->{root}&rpw=$form->{rpw}"; $href =~ s/ /%20/g; $member{$key}{templates} =~ s/^$templates\///; $member{$key}{dbhost} = $locale->text('localhost') unless $member{$key}{dbhost}; $member{$key}{dbname} = $member{$key}{dbuser} if ($member{$key}{dbdriver} eq 'Oracle'); $column_data{login} = qq||; $column_data{name} = qq||; $column_data{company} = qq||; $column_data{dbdriver} = qq||; $column_data{dbhost} = qq||; $column_data{dataset} = qq||; $column_data{templates} = qq||; $i++; $i %= 2; print qq| |; map { print "$column_data{$_}\n" } @column_index; print qq| |; } print qq|
$key$member{$key}{name}$member{$key}{company}$member{$key}{dbdriver}$member{$key}{dbhost}$member{$key}{dbname}$member{$key}{templates}

{path}> {rpw}>
$dbdrivers
|.$locale->text('Click on login name to edit!').qq|
|.$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|

SQL-Ledger |.$locale->text('Accounting')." ".$locale->text('Login').qq|
{path}>
|.$locale->text('Name').qq|  
|.$locale->text('Password').qq|
|; } sub form_header { # if there is a login, get user if ($form->{login}) { # get user $myconfig = new User "$memberfile", "$form->{login}"; $myconfig->{signature} =~ s/\\n/\r\n/g; $myconfig->{address} =~ s/\\n/\r\n/g; # strip basedir from templates directory $myconfig->{templates} =~ s/^$templates\///; $myconfig->{dbpasswd} = unpack 'u', $myconfig->{dbpasswd}; } foreach $item (qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd)) { $dateformat .= ($item eq $myconfig->{dateformat}) ? "