Antworten

Name:
E-Mail:
Betreff:
Symbol:

Nur Registierte Nutzer können Dateien anhängen.
Verifizierung:

Shortcuts: mit Alt+S Beitrag schreiben oder Alt+P für Vorschau


Zusammenfassung

Autor: tom-dwzi
« am: 06.02.2020 18:18:05 »

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

Autor: tom-dwzi
« am: 15.07.2019 10:37:51 »

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
Autor: Tino Voigt
« am: 15.07.2019 08:13:28 »

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
Autor: tom-dwzi
« am: 09.07.2019 15:27:02 »

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