Der Wert für den Parameter 'port' steht oftmals nicht in Anführungszeichen, weil...
[kivitendo-erp.git] / SL / Auth.pm
index 8ac2293..94f843a 100644 (file)
@@ -122,13 +122,13 @@ sub authenticate {
 }
 
 sub dbconnect {
-  $main::lxdebug->enter_sub();
+  $main::lxdebug->enter_sub(2);
 
   my $self     = shift;
   my $may_fail = shift;
 
   if ($self->{dbh}) {
-    $main::lxdebug->leave_sub();
+    $main::lxdebug->leave_sub(2);
     return $self->{dbh};
   }
 
@@ -222,7 +222,7 @@ sub create_database {
     $main::form->error($main::locale->text('The connection to the template database failed:') . "\n" . $DBI::errstr);
   }
 
-  my $charset    = $main::charset;
+  my $charset    = $main::dbcharset;
   $charset     ||= Common::DEFAULT_CHARSET;
   my $encoding   = $Common::charset_to_db_encoding{$charset};
   $encoding    ||= 'UNICODE';
@@ -234,9 +234,18 @@ sub create_database {
   $dbh->do($query);
 
   if ($dbh->err) {
+    my $error = $dbh->errstr();
+
+    $query                 = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|;
+    my ($cluster_encoding) = $dbh->selectrow_array($query);
+
+    if ($cluster_encoding && ($cluster_encoding =~ m/^(?:UTF-?8|UNICODE)$/i) && ($encoding !~ m/^(?:UTF-?8|UNICODE)$/i)) {
+      $error = $main::locale->text('Your PostgreSQL installationen uses UTF-8 as its encoding. Therefore you have to configure Lx-Office to use UTF-8 as well.');
+    }
+
     $dbh->disconnect();
 
-    $main::form->error($main::locale->text('The creation of the authentication database failed:') . "\n" . $DBI::errstr);
+    $main::form->error($main::locale->text('The creation of the authentication database failed:') . "\n" . $error);
   }
 
   $dbh->disconnect();
@@ -250,7 +259,7 @@ sub create_tables {
   my $self = shift;
   my $dbh  = $self->dbconnect();
 
-  my $charset    = $main::charset;
+  my $charset    = $main::dbcharset;
   $charset     ||= Common::DEFAULT_CHARSET;
 
   $dbh->rollback();
@@ -349,7 +358,7 @@ sub read_user {
   my $login = shift;
 
   my $dbh   = $self->dbconnect();
-  my $query = qq|SELECT cfg.cfg_key, cfg.cfg_value
+  my $query = qq|SELECT u.id, u.login, cfg.cfg_key, cfg.cfg_value
                  FROM auth.user_config cfg
                  LEFT JOIN auth."user" u ON (cfg.user_id = u.id)
                  WHERE (u.login = ?)|;
@@ -359,7 +368,7 @@ sub read_user {
 
   while (my $ref = $sth->fetchrow_hashref()) {
     $user_data{$ref->{cfg_key}} = $ref->{cfg_value};
-    $user_data{login}           = $login;
+    @user_data{qw(id login)}    = @{$ref}{qw(id login)};
   }
 
   $sth->finish();
@@ -620,6 +629,20 @@ sub all_rights_full {
   my $locale = $main::locale;
 
   my @all_rights = (
+    ["--crm",                          $locale->text("CRM optional software")],
+    ["crm_search",                     $locale->text("CRM search")],
+    ["crm_new",                        $locale->text("CRM create customers, vendors and contacts")],
+    ["crm_service",                    $locale->text("CRM services")],
+    ["crm_admin",                      $locale->text("CRM admin")],
+    ["crm_adminuser",                  $locale->text("CRM user")],
+    ["crm_adminstatus",                $locale->text("CRM status")],
+    ["crm_email",                      $locale->text("CRM send email")],
+    ["crm_termin",                     $locale->text("CRM termin")],
+    ["crm_opportunity",                $locale->text("CRM opportunity")],
+    ["crm_knowhow",                    $locale->text("CRM know how")],
+    ["crm_follow",                     $locale->text("CRM follow up")],
+    ["crm_notices",                    $locale->text("CRM notices")],
+    ["crm_other",                      $locale->text("CRM other")],
     ["--master_data",                  $locale->text("Master Data")],
     ["customer_vendor_edit",           $locale->text("Create and edit customers and vendors")],
     ["part_service_assembly_edit",     $locale->text("Create and edit parts, services, assemblies")],