use Digest::MD5 qw(md5_hex);
use IO::File;
use Time::HiRes qw(gettimeofday);
+use List::MoreUtils qw(uniq);
use SL::Auth::DB;
use SL::Auth::LDAP;
}
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};
}
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 = ?)|;
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();
sub _create_session_id {
$main::lxdebug->enter_sub();
- my @secs = gettimeofday();
- srand $secs[1] + $$;
-
my @data;
map { push @data, int(rand() * 255); } (1..32);
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")],
+ ["--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")],
$sth = prepare_query($form, $dbh, $query);
foreach $group (values %{$groups}) {
- $group->{members} = [];
+ my @members;
do_statement($form, $sth, $query, $group->{id});
while ($row = $sth->fetchrow_hashref()) {
- push @{$group->{members}}, $row->{user_id};
+ push @members, $row->{user_id};
}
+ $group->{members} = [ uniq @members ];
}
$sth->finish();
$query = qq|INSERT INTO auth.user_group (user_id, group_id) VALUES (?, ?)|;
$sth = prepare_query($form, $dbh, $query);
- foreach my $user_id (@{ $group->{members} }) {
+ foreach my $user_id (uniq @{ $group->{members} }) {
do_statement($form, $sth, $query, $user_id, $group->{id});
}
$sth->finish();