X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fadmin.pl;h=2da3ba58ab6e57b7ca61739b6ccafcb76ddebaab;hb=2b260ba4ae39d5827145f8aed03f5afeb62e36ad;hp=42efda84250977e5d44ec8f1b9d147a9a161e007;hpb=aa88143332a85c1048fcf02d4e2ea53751d7778e;p=kivitendo-erp.git diff --git a/bin/mozilla/admin.pl b/bin/mozilla/admin.pl index 42efda842..2da3ba58a 100755 --- a/bin/mozilla/admin.pl +++ b/bin/mozilla/admin.pl @@ -32,8 +32,6 @@ # #====================================================================== -my $menufile = "menu.ini"; - use DBI; use CGI; use English qw(-no_match_vars); @@ -45,6 +43,7 @@ use Sys::Hostname; use SL::Auth; use SL::Form; +use SL::Iconv; use SL::Mailer; use SL::User; use SL::Common; @@ -54,62 +53,55 @@ use SL::DBUtils; require "bin/mozilla/common.pl"; require "bin/mozilla/admin_groups.pl"; +require "bin/mozilla/admin_printer.pl"; use strict; -our $cgi = new CGI(''); -our $form = new Form; -our $locale = new Locale $main::language, "admin"; -our $auth = SL::Auth->new(); - -if ($auth->session_tables_present()) { - $auth->expire_sessions(); - $auth->restore_session(); - $auth->set_session_value('rpw', $form->{rpw}); -} - -# customization -if (-f "bin/mozilla/custom_$form->{script}") { - eval { require "bin/mozilla/custom_$form->{script}"; }; - $form->error($@) if ($@); -} - -$form->{stylesheet} = "lx-office-erp.css"; -$form->{favicon} = "favicon.ico"; - -if ($form->{action}) { - if ($auth->authenticate_root($form->{rpw}, 0) != $auth->OK()) { - $form->{error_message} = $locale->text('Incorrect Password!'); - adminlogin(); - exit; - } - - $auth->create_or_refresh_session() if ($auth->session_tables_present()); +our $cgi; +our $form; +our $locale; +our $auth; - call_sub($locale->findsub($form->{action})); +sub run { + $::lxdebug->enter_sub; + my $session_result = shift; -} elsif ($auth->authenticate_root($form->{rpw}, 0) == $auth->OK()) { + $cgi = $::cgi; + $form = $::form; + $locale = $::locale; + $auth = $::auth; - $auth->create_or_refresh_session() if ($auth->session_tables_present()); + $::auth->set_session_value('rpw', $::form->{rpw}) if $session_result == SL::Auth->SESSION_OK; - login(); + $form->{stylesheet} = "lx-office-erp.css"; + $form->{favicon} = "favicon.ico"; -} else { - # if there are no drivers bail out - $form->error($locale->text('No Database Drivers available!')) - unless (User->dbdrivers); + if ($form->{action}) { + if ($auth->authenticate_root($form->{rpw}, 0) != $auth->OK()) { + $form->{error_message} = $locale->text('Incorrect Password!'); + adminlogin(); + } else { + if ($auth->session_tables_present()) { + $::auth->set_session_value('rpw', $::form->{rpw}); + $::auth->create_or_refresh_session(); + _apply_dbupgrade_scripts(); + } - adminlogin(); + call_sub($locale->findsub($form->{action})); + } + } else { + # if there are no drivers bail out + $form->error($locale->text('No Database Drivers available!')) + unless (User->dbdrivers); + adminlogin(); + } + $::lxdebug->leave_sub; } -1; - -# end - sub adminlogin { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{title} = qq|Lx-Office ERP $form->{version} | . $locale->text('Administration'); @@ -128,8 +120,8 @@ sub logout { } sub check_auth_db_and_tables { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my %params; @@ -140,7 +132,7 @@ sub check_auth_db_and_tables { $form->header(); print $form->parse_html_template('admin/check_auth_database', \%params); - exit 0; + ::end_of_request(); } if (!$main::auth->check_tables()) { @@ -148,7 +140,7 @@ sub check_auth_db_and_tables { $form->header(); print $form->parse_html_template('admin/check_auth_tables', \%params); - exit 0; + ::end_of_request(); } if (-f $main::memberfile) { @@ -165,22 +157,22 @@ sub check_auth_db_and_tables { print $form->parse_html_template('admin/user_migration', { 'memberfile' => $main::memberfile, 'backupdir' => $backupdir }); - exit 0 + ::end_of_request(); } } sub create_auth_db { - my $form = $main::form; + my $form = $main::form; $main::auth->create_database('superuser' => $form->{db_superuser}, - 'superuser_password' => $form->{db_superuser_password}, - 'template' => $form->{db_template}); + 'superuser_password' => $form->{db_superuser_password}, + 'template' => $form->{db_template}); login(); } sub create_auth_tables { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $main::auth->create_tables(); $main::auth->set_session_value('rpw', $form->{rpw}); @@ -199,14 +191,15 @@ sub create_auth_tables { $main::auth->save_group($group); } + _apply_dbupgrade_scripts(); login(); } sub migrate_users { $main::lxdebug->enter_sub(); - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my $memberdir = ""; @@ -285,8 +278,8 @@ sub migrate_users { } sub create_standard_group_ask { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{title} = $locale->text('Create a standard group'); @@ -295,12 +288,12 @@ sub create_standard_group_ask { } sub create_standard_group { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my %members = $main::auth->read_all_users(); - my $groups = $main::auth->read_groups(); + my $groups = $main::auth->read_groups(); foreach my $group (values %{$groups}) { if (($form->{group_id} != $group->{id}) @@ -328,8 +321,8 @@ sub dont_create_standard_group { sub user_migration_complete { my $standard_group_created = shift; - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{title} = $locale->text('User migration complete'); $form->header(); @@ -338,8 +331,8 @@ sub user_migration_complete { } sub list_users { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my %members = $main::auth->read_all_users(); @@ -356,37 +349,35 @@ sub list_users { } sub add_user { + my $form = $main::form; + my $locale = $main::locale; - my $form = $main::form; - my $locale = $main::locale; - - $form->{title} = - "Lx-Office ERP " - . $locale->text('Administration') . " / " - . $locale->text('Add User'); + $form->{title} = "Lx-Office ERP " . $locale->text('Administration') . " / " . $locale->text('Add User'); - my $myconfig = { +# Note: Menu Style 'v3' is not compatible to all browsers! +# "menustyle" => "old" sets the HTML Menu to default. + my $myconfig = { "vclimit" => 200, "countrycode" => "de", "numberformat" => "1.000,00", "dateformat" => "dd.mm.yy", "stylesheet" => "lx-office-erp.css", - "menustyle" => "v3", + "menustyle" => "old", + dbport => $::auth->{DB_config}->{port} || 5432, + dbuser => $::auth->{DB_config}->{user} || 'lxoffice', + dbhost => $::auth->{DB_config}->{host} || 'localhost', }; + edit_user_form($myconfig); } sub edit_user { - my $form = $main::form; - my $locale = $main::locale; - + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Administration') . " / " - . $locale->text('Edit User'); - $form->{edit} = 1; + $form->{title} = "Lx-Office ERP " . $locale->text('Administration') . " / " . $locale->text('Edit User'); + $form->{edit} = 1; $form->isblank("login", $locale->text("The login is missing.")); @@ -402,8 +393,8 @@ sub edit_user { sub edit_user_form { my ($myconfig) = @_; - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my @valid_dateformats = qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd); $form->{ALL_DATEFORMATS} = [ map { { "format" => $_, "selected" => $_ eq $myconfig->{dateformat} } } @valid_dateformats ]; @@ -478,8 +469,8 @@ sub edit_user_form { } sub save_user { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{dbdriver} = 'Pg'; @@ -593,7 +584,7 @@ sub save_user { } sub save_user_as_new { - my $form = $main::form; + my $form = $main::form; $form->{login} = $form->{new_user_login}; delete @{$form}{qw(edit new_user_login)}; @@ -602,8 +593,8 @@ sub save_user_as_new { } sub delete_user { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my %members = $main::auth->read_all_users(); my $templates = $members{$form->{login}}->{templates}; @@ -639,10 +630,7 @@ sub login_name { } sub get_value { - my $line = shift; - - my $form = $main::form; - + my $line = shift; my ($null, $value) = split(/=/, $line, 2); # remove comments @@ -655,7 +643,7 @@ sub get_value { } sub pg_database_administration { - my $form = $main::form; + my $form = $main::form; $form->{dbdriver} = 'Pg'; dbselect_source(); @@ -663,13 +651,13 @@ sub pg_database_administration { } sub dbselect_source { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{dbport} = '5432'; - $form->{dbuser} = 'postgres'; + $form->{dbport} = $::auth->{DB_config}->{port} || 5432; + $form->{dbuser} = $::auth->{DB_config}->{user} || 'lxoffice'; $form->{dbdefault} = 'template1'; - $form->{dbhost} = 'localhost'; + $form->{dbhost} = $::auth->{DB_config}->{host} || 'localhost'; $form->{title} = "Lx-Office ERP / " . $locale->text('Database Administration'); @@ -681,8 +669,8 @@ sub dbselect_source { } sub test_db_connection { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{dbdriver} = 'Pg'; User::dbconnect_vars($form, $form->{dbname}); @@ -704,13 +692,10 @@ sub continue { } sub update_dataset { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Update Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Update Dataset'); my @need_updates = User->dbneedsupdate($form); $form->{NEED_UPDATES} = \@need_updates; @@ -721,8 +706,8 @@ sub update_dataset { } sub dbupdate { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{stylesheet} = "lx-office-erp.css"; $form->{title} = $locale->text("Dataset upgrade"); @@ -742,15 +727,13 @@ sub dbupdate { map { $form->{$_} = $form->{"${_}_${i}"} } qw(dbname dbdriver dbhost dbport dbuser dbpasswd); - my $controls = parse_dbupdate_controls($form, $form->{dbdriver}); - print $form->parse_html_template("admin/dbupgrade_header"); $form->{dbupdate} = $form->{dbname}; $form->{$form->{dbname}} = 1; User->dbupdate($form); - User->dbupdate2($form, $controls); + User->dbupdate2($form, SL::DBUpgrade2->new(form => $form, dbdriver => $form->{dbdriver})->parse_dbupdate_controls); print $form->parse_html_template("admin/dbupgrade_footer"); } @@ -759,12 +742,12 @@ sub dbupdate { } sub create_dataset { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->{dbsources} = join " ", map { "[${_}]" } sort User->dbsources($form); - $form->{CHARTS} = []; + $form->{CHARTS} = []; opendir SQLDIR, "sql/." or $form->error($ERRNO); foreach my $item (sort grep /-chart\.sql\z/, readdir SQLDIR) { @@ -798,43 +781,34 @@ sub create_dataset { } } - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Create Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Create Dataset'); $form->header(); print $form->parse_html_template("admin/create_dataset"); } sub dbcreate { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; $form->isblank("db", $locale->text('Dataset missing!')); User->dbcreate(\%$form); - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Create Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Create Dataset'); $form->header(); print $form->parse_html_template("admin/dbcreate"); } sub delete_dataset { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; my @dbsources = User->dbsources_unused($form); $form->error($locale->text('Nothing to delete!')) unless @dbsources; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Delete Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Delete Dataset'); $form->{DBSOURCES} = [ map { { "name", $_ } } sort @dbsources ]; $form->header(); @@ -842,8 +816,8 @@ sub delete_dataset { } sub dbdelete { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; if (!$form->{db}) { $form->error($locale->text('No Dataset selected!')); @@ -851,22 +825,16 @@ sub dbdelete { User->dbdelete(\%$form); - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Delete Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Delete Dataset'); $form->header(); print $form->parse_html_template("admin/dbdelete"); } sub backup_dataset { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Backup Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Backup Dataset'); if ("$main::pg_dump_exe" eq "DISABLED") { $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); @@ -885,13 +853,10 @@ sub backup_dataset { } sub backup_dataset_start { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Backup Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Backup Dataset'); $main::pg_dump_exe ||= "pg_dump"; @@ -967,10 +932,7 @@ sub backup_dataset_start { unlink "${tmpdir}/.pgpass", $tmp; rmdir $tmpdir; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Backup Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Backup Dataset'); $form->header(); print $form->parse_html_template("admin/backup_dataset_email_done"); @@ -978,13 +940,10 @@ sub backup_dataset_start { } sub restore_dataset { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Restore Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Restore Dataset'); if ("$main::pg_restore_exe" eq "DISABLED") { $form->error($locale->text('Database backups and restorations are disabled in lx-erp.conf.')); @@ -1006,13 +965,10 @@ sub restore_dataset { } sub restore_dataset_start { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; - $form->{title} = - "Lx-Office ERP " - . $locale->text('Database Administration') . " / " - . $locale->text('Restore Dataset'); + $form->{title} = "Lx-Office ERP " . $locale->text('Database Administration') . " / " . $locale->text('Restore Dataset'); $main::pg_restore_exe ||= "pg_restore"; @@ -1132,8 +1088,8 @@ sub restore_dataset_start { } sub unlock_system { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; unlink "$main::userspath/nologin"; @@ -1144,8 +1100,8 @@ sub unlock_system { } sub lock_system { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; open(FH, ">$main::userspath/nologin") or $form->error($locale->text('Cannot create Lock!')); @@ -1170,7 +1126,7 @@ sub add { } sub edit { - my $form = $main::form; + my $form = $main::form; $form->{edit_nextsub} ||= 'edit_user'; @@ -1186,7 +1142,7 @@ sub delete { } sub save { - my $form = $main::form; + my $form = $main::form; $form->{save_nextsub} ||= 'save_user'; @@ -1198,8 +1154,8 @@ sub back { } sub dispatcher { - my $form = $main::form; - my $locale = $main::locale; + my $form = $main::form; + my $locale = $main::locale; foreach my $action (qw(create_standard_group dont_create_standard_group save_user delete_user save_user_as_new)) { @@ -1214,4 +1170,8 @@ sub dispatcher { $form->error($locale->text('No action defined.')); } +sub _apply_dbupgrade_scripts { + ::end_of_request() if SL::DBUpgrade2->new(form => $::form, dbdriver => 'Pg', auth => 1)->apply_admin_dbupgrade_scripts(1); +} + 1;