return $self;
}
+sub get_user_dbh {
+ my ($self, $login) = @_;
+ my %user = $self->read_user($login);
+ my $dbh = DBI->connect(
+ $user{dbconnect},
+ $user{dbuser},
+ $user{dbpasswd},
+ {
+ pg_enable_utf8 => $::locale->is_utf8,
+ AutoCommit => 0
+ }
+ ) or $::form->dberror;
+
+ if ($user{dboptions}) {
+ $dbh->do($user{dboptions}) or $::form->dberror($user{dboptions});
+ }
+
+ return $dbh;
+}
+
sub DESTROY {
my $self = shift;
$main::lxdebug->message(LXDebug->DEBUG1, "Auth::dbconnect DSN: $dsn");
- $self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { 'AutoCommit' => 0 });
+ $self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { pg_enable_utf8 => $::locale->is_utf8, AutoCommit => 0 });
if (!$may_fail && !$self->{dbh}) {
$main::form->error($main::locale->text('The connection to the authentication database failed:') . "\n" . $DBI::errstr);
$main::lxdebug->message(LXDebug->DEBUG1(), "Auth::create_database DSN: $dsn");
- my $dbh = DBI->connect($dsn, $params{superuser}, $params{superuser_password});
-
- if (!$dbh) {
- $main::form->error($main::locale->text('The connection to the template database failed:') . "\n" . $DBI::errstr);
- }
-
my $charset = $main::dbcharset;
$charset ||= Common::DEFAULT_CHARSET;
my $encoding = $Common::charset_to_db_encoding{$charset};
$encoding ||= 'UNICODE';
+ my $dbh = DBI->connect($dsn, $params{superuser}, $params{superuser_password}, { pg_enable_utf8 => $charset =~ m/^utf-?8$/i });
+
+ if (!$dbh) {
+ $main::form->error($main::locale->text('The connection to the template database failed:') . "\n" . $DBI::errstr);
+ }
+
my $query = qq|CREATE DATABASE "$cfg->{db}" OWNER "$cfg->{user}" TEMPLATE "$params{template}" ENCODING '$encoding'|;
$main::lxdebug->message(LXDebug->DEBUG1(), "Auth::create_database query: $query");
}
}
- $main::lxdebug->enter_sub(2);
+ $main::lxdebug->leave_sub(2);
return $value;
}
pop @stack;
if (!@stack) {
- $main::lxdebug->enter_sub(2);
+ $main::lxdebug->leave_sub(2);
return 0;
}
my $result = ($access || (1 < scalar @stack)) ? 0 : evaluate_rights_ary($stack[0]);
- $main::lxdebug->enter_sub(2);
+ $main::lxdebug->leave_sub(2);
return $result;
}