Hauptmenü

mehrere CustomerUser-DBs, Berechtigungen werden nicht abgefragt

Begonnen von tom-dwzi, 09.07.2019 15:27:02

⏪ vorheriges - nächstes ⏩

tom-dwzi

Hallo,

Wir haben mehrere CustomerUser-DBs angelegt und für jede separate Gruppen angelegt.

Fehler 1:
Es werden beim Aufruf der CustomerUser (/kix/index.pl?Action=AdminCustomerUser;Nav=Agent) immer alle potentiellen DBs angezeigt, obwohl der Agent nur für eine DB berechtigt wurde.
(Abfrage der Berechtigung fehlt im Perl Skript)

Fehler 2:
Wenn nun versucht wird mit einer nicht berechtigte CustomerUser-DB ein User anzulegen erhält man nach Eingabe der Daten (Submit) einen 500er-Fehler.
(Can't call method "CustomerUserAdd" on an undefined value at /opt/kix/Kernel/System/CustomerUser.pm line 494.)
Eine entsprechende KIX-Fehlermeldung fehlt, da die Berechtigung nicht abgefragt wurde.

Version: KIX 17.4.1-0

Liebe Grüße
Thomas

Tino Voigt

Hallo tom-dwzi,

möchte man die Sichbarkeit von Kundendaten auf Agenten Gruppen einschränken, müsste noch der Eintrag Access Groups in der Config.pm in der Konfiguration des jeweiligen Backends ergänzt werden:

$Self->{CustomerUser} = {
    Name   => 'Database Backend',
    Module => 'Kernel::System::CustomerUser::DB',
    [...]
    AccessGroups => [ 'users', 'admin'],
    Map => [
        # note: Login, Email and CustomerID needed!
        # ...
    ],
};

In diesem Beispiel haben nur Agenten der Gruppen ,,users" und ,,admin" Rechte die Kundendaten anzuzeigen.

Viele Grüße, Tino Voigt

tom-dwzi

#2
Hallo Tino,
Danke für die Info. Das Feld AccessGroups wurde bereits hinzugefügt.Es werden auch nur die Daten der berechtigten DBs angezeigt.
Hier handelt es sich um einen Bug in der Abfrage der verfügbaren DBs, da hier alle DBs abgefragt werden und nicht nur die mit Berechtigungen.

Liebe GrüßeThomas

tom-dwzi

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}
    );


Tino Voigt

Hallo tom-dwzi,

Vielen Dank für deine Mühe.

Ich habe das Thema zur weiteren Prüfung an unserer Entwicklungsabteilung übergeben.

Viele Grüße, Tino Voigt