X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FUser.pm;h=f5afb553ff46d03f7a4a252cdb023914ae75348d;hb=8b34d2951ae9a949476331eb5b8f6249df616b5b;hp=49ba3392432011fbfee03199ba11521b19723708;hpb=6c45a4db1503cc140e66b55386d55e4fbddbc680;p=kivitendo-erp.git diff --git a/SL/User.pm b/SL/User.pm index 49ba33924..f5afb553f 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -49,12 +49,12 @@ use strict; sub new { $main::lxdebug->enter_sub(); - my ($type, $login) = @_; + my ($type, %params) = @_; my $self = {}; - if ($login ne "") { - my %user_data = $main::auth->read_user($login); + if ($params{id} || $params{login}) { + my %user_data = $main::auth->read_user(%params); map { $self->{$_} = $user_data{$_} } keys %user_data; } @@ -102,10 +102,10 @@ sub login { my $rc = -3; if ($self->{login}) { - my %myconfig = $main::auth->read_user($self->{login}); + my %myconfig = $main::auth->read_user(login => $self->{login}); # check if database is down - my $dbh = SL::DBConnect->connect($myconfig{dbconnect}, $myconfig{dbuser}, $myconfig{dbpasswd}) + my $dbh = SL::DBConnect->connect($myconfig{dbconnect}, $myconfig{dbuser}, $myconfig{dbpasswd}, SL::DBConnect->get_options) or $self->error($DBI::errstr); # we got a connection, check the version @@ -136,9 +136,8 @@ sub login { $dbh->disconnect; if ($update_available) { - $form->{"stylesheet"} = "lx-office-erp.css"; $form->{"title"} = $main::locale->text("Dataset upgrade"); - $form->header(); + $form->header(no_layout => $form->{no_layout}); print $form->parse_html_template("dbupgrade/header"); $form->{dbupdate} = "db$myconfig{dbname}"; @@ -150,7 +149,7 @@ sub login { } # update the tables - if (!open(FH, ">", $::lx_office_conf{paths}->{userspath} . "/nologin")) { + if (!$::lx_office_conf{debug}->{keep_installation_unlocked} && !open(FH, ">", $::lx_office_conf{paths}->{userspath} . "/nologin")) { $form->show_generic_error($main::locale->text('A temporary file could not be created. ' . 'Please verify that the directory "#1" is writeable by the webserver.', $::lx_office_conf{paths}->{userspath}), @@ -173,13 +172,7 @@ sub login { # remove lock file unlink($::lx_office_conf{paths}->{userspath} . "/nologin"); - my $menufile = - $self->{"menustyle"} eq "v3" ? "menuv3.pl" : - $self->{"menustyle"} eq "neu" ? "menunew.pl" : - $self->{"menustyle"} eq "js" ? "menujs.pl" : - "menu.pl"; - - print $form->parse_html_template("dbupgrade/footer", { "menufile" => $menufile }); + print $form->parse_html_template("dbupgrade/footer"); $rc = -2; } @@ -199,18 +192,14 @@ sub dbconnect_vars { 'Pg' => { 'yy-mm-dd' => 'set DateStyle to \'ISO\'', 'yyyy-mm-dd' => 'set DateStyle to \'ISO\'', 'mm/dd/yy' => 'set DateStyle to \'SQL, US\'', - 'mm-dd-yy' => 'set DateStyle to \'POSTGRES, US\'', 'dd/mm/yy' => 'set DateStyle to \'SQL, EUROPEAN\'', - 'dd-mm-yy' => 'set DateStyle to \'POSTGRES, EUROPEAN\'', 'dd.mm.yy' => 'set DateStyle to \'GERMAN\'' }, 'Oracle' => { 'yy-mm-dd' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'YY-MM-DD\'', 'yyyy-mm-dd' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'YYYY-MM-DD\'', 'mm/dd/yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'MM/DD/YY\'', - 'mm-dd-yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'MM-DD-YY\'', 'dd/mm/yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD/MM/YY\'', - 'dd-mm-yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD-MM-YY\'', 'dd.mm.yy' => 'ALTER SESSION SET NLS_DATE_FORMAT = \'DD.MM.YY\'', }); @@ -256,7 +245,7 @@ sub dbsources { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; if ($form->{dbdriver} eq 'Pg') { @@ -273,7 +262,7 @@ sub dbsources { next if ($db =~ /^template/); &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $query = @@ -328,7 +317,7 @@ sub dbclusterencoding { dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) || $form->dberror(); + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) || $form->dberror(); my $query = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|; my ($cluster_encoding) = $dbh->selectrow_array($query); $dbh->disconnect(); @@ -346,7 +335,7 @@ sub dbcreate { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); my $dbh = - SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $form->{db} =~ s/\"//g; my %dbcreate = ( @@ -388,7 +377,7 @@ sub dbcreate { &dbconnect_vars($form, $form->{db}); - $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; my $db_charset = $Common::db_encoding_to_charset{$form->{encoding}}; @@ -409,6 +398,8 @@ sub dbcreate { do_query($form, $dbh, $query, $form->{profit_determination}); $query = "UPDATE defaults SET inventory_system = ?"; do_query($form, $dbh, $query, $form->{inventory_system}); + $query = "UPDATE defaults SET curr = ?"; + do_query($form, $dbh, $query, $form->{defaultcurrency}); $dbh->disconnect; @@ -425,7 +416,7 @@ sub dbdelete { $form->{sid} = $form->{dbdefault}; &dbconnect_vars($form, $form->{dbdefault}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; my $query = $dbdelete{$form->{dbdriver}}; do_query($form, $dbh, $query); @@ -471,7 +462,7 @@ sub dbneedsupdate { map { $form->{$_} = $member->{$_} } qw(dbname dbuser dbpasswd dbhost dbport); dbconnect_vars($form, $form->{dbname}); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}); + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options); next unless $dbh; @@ -601,7 +592,7 @@ sub dbupdate { $db =~ s/^db//; &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $dbh->do($form->{dboptions}) if ($form->{dboptions}); @@ -665,7 +656,7 @@ sub dbupdate2 { $db =~ s/^db//; &dbconnect_vars($form, $db); - my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) or $form->dberror; + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $dbh->do($form->{dboptions}) if ($form->{dboptions}); @@ -697,7 +688,6 @@ sub save_member { $main::lxdebug->enter_sub(); my ($self) = @_; - my $form = \%main::form; # format dbconnect and dboptions string dbconnect_vars($self, $self->{dbname}); @@ -706,9 +696,9 @@ sub save_member { $main::auth->save_user($self->{login}, map { $_, $self->{$_} } config_vars()); - my $dbh = SL::DBConnect->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd}); + my $dbh = SL::DBConnect->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd}, SL::DBConnect->get_options); if ($dbh) { - $self->create_employee_entry($form, $dbh, $self, 1); + $self->create_employee_entry($::form, $dbh, $self, 1); $dbh->disconnect(); } @@ -731,14 +721,17 @@ sub create_employee_entry { # add login to employee table if it does not exist # no error check for employee table, ignore if it does not exist - my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login}); + my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login}); + my ($good_db) = selectrow_query($form, $dbh, qq|select * from pg_tables where tablename = ? and schemaname = ?|, 'schema_info', 'public'); + my $can_delete; + ($can_delete) = selectrow_query($form, $dbh, qq|SELECT tag FROM schema_info WHERE tag = ?|, 'employee_deleted') if $good_db; if (!$id) { my $query = qq|INSERT INTO employee (login, name, workphone, role) VALUES (?, ?, ?, ?)|; do_query($form, $dbh, $query, ($self->{login}, $myconfig->{name}, $myconfig->{tel}, "user")); - } elsif ($update_existing) { - my $query = qq|UPDATE employee SET name = ?, workphone = ?, role = 'user' WHERE id = ?|; + } elsif ($update_existing && $can_delete) { + my $query = qq|UPDATE employee SET name = ?, workphone = ?, role = 'user', deleted = 'f' WHERE id = ?|; do_query($form, $dbh, $query, $myconfig->{name}, $myconfig->{tel}, $id); } @@ -748,15 +741,8 @@ sub create_employee_entry { sub config_vars { $main::lxdebug->enter_sub(); - my @conf = qw(address admin businessnumber company countrycode - currency dateformat dbconnect dbdriver dbhost dbport dboptions - dbname dbuser dbpasswd email fax name numberformat password - printer sid signature stylesheet tel templates vclimit angebote - bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen - taxnumber co_ustid duns menustyle template_format default_media - default_printer_id copies show_form_details favorites - pdonumber sdonumber hide_cvar_search_options mandatory_departments - sepa_creditor_id); + my @conf = qw(copies countrycode dateformat default_media default_printer_id email favorites fax hide_cvar_search_options mandatory_departments menustyle name + numberformat show_form_details signature stylesheet taxincluded_checked tel template_format vclimit); $main::lxdebug->leave_sub(); @@ -787,5 +773,8 @@ sub error { $main::lxdebug->leave_sub(); } -1; +sub data { + +{ %{ $_[0] } } +} +1;