Ich hab mir mal die Mühe gemacht im Source Code den entsprechenden Part zu überarbeiten, damit klar ist, was ich meine.Unter index.pl?Action=AdminCustomerUser;Nav=Agent werden links prinzipiell alle verfügbaren Kundendatenbanken angezeigt, unabhängig von AccessGroup, da diese nicht abgefragt wird.
Mit diesen Code-Änderungen werden nur die DBs angezeigt, die auch unter AccessGroup eingetragen sind.
# Kernel/System/CustomerUser.pm# line 195ff:sub CustomerSourceList {
my ( $Self, %Param ) = @_;
# get config object
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
my %Data;
my @UserGroups;
my $GroupObject = $Kernel::OM->Get('Kernel::System::Group');
@UserGroups = $GroupObject->GroupMemberList(
UserID => $Param{UserID},
Type => 'ro',
Result => 'Name',
);
SOURCE:
for my $Count ( '', 1 .. 10 ) {
next SOURCE if !$ConfigObject->Get("CustomerUser$Count");
my $BackendGroups = $ConfigObject->Get("CustomerUser$Count")->{AccessGroups} || "";
my $Access = 1;
if ( $BackendGroups && ref $BackendGroups eq 'ARRAY' ) {
GROUP:
for my $Group ( @{$BackendGroups} ) {
$Access = 0;
next GROUP if ( ( grep { $_ eq $Group; } @UserGroups ) == 0 );
$Access = 1;
last;
}
}
if ($Access) {
if ( defined $Param{ReadOnly} ) {
my $CustomerBackendConfig = $ConfigObject->Get("CustomerUser$Count");
if ( $Param{ReadOnly} ) {
next SOURCE if !$CustomerBackendConfig->{ReadOnly};
}
else {
next SOURCE if $CustomerBackendConfig->{ReadOnly};
}
}
$Data{"CustomerUser$Count"} = $ConfigObject->Get("CustomerUser$Count")->{Name}
|| "No Name $Count";
}
}
return %Data;
}
# Kernel/Modules/AdminCustomerUser.pm# line 690ff: my %CustomerSource = $CustomerUserObject->CustomerSourceList(
ReadOnly => 0,
UserID => $Self->{UserID}
);