OTRS CVS - Handbuch
Prev | Chapter 10. Kunden (min. OTRS 1.1) | Next

# Kundenbenutzer-Backend

Es existieren zwei Kundenbenutzer-Backends, DB und LDAP. Falls Sie bereits ein Kunden-Verzeichnis (z.B. SAP, ...) haben, ist es natürlich möglich, dafür ein eigenes Backend zu schreiben.

Notiz: Es is auch möglich mehr als einen Kunden-Daten Topf zu definieren. Einfach eine weitere Konfig Option wie "CustomerUser" mit einer Nummer zwischen 1 und 10. Zum Beispiel "CustomerUser1".

## Datenbank (Standard)

Dies ist ein Beispiel für ein Datenbank-Backend.

        [Kernel/Config.pm]
        # CustomerUser
        # (customer user database backend and settings)
        $Self->{CustomerUser} = {
            Name => 'Datenbank Quelle',
            Module => 'Kernel::System::CustomerUser::DB',
            Params => {
                # if you want to use an external database, add the
                # required settings
    #            DSN => 'DBI:odbc:yourdsn',
    #            DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
    #            User => '',
    #            Password => '',
                Table => 'customer_user',
            },
            # customer uniq id
            CustomerKey => 'login',
            # customer #
            CustomerID => 'customer_id',
            CustomerValid => 'valid_id',
            CustomerUserListFields => ['login', 'first_name', 'last_name', 'email'],
            CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
            CustomerUserPostMasterSearchFields => ['email'],
            CustomerUserNameFields => ['salutation', 'first_name', 'last_name'],
            Map => [
                # note: Login, Email and CustomerID needed!
                # var, frontend, storage, shown, required, storage-type, http-link
                [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var' ],
                [ 'UserFirstname', 'Firstname', 'first_name', 1, 1, 'var' ],
                [ 'UserLastname', 'Lastname', 'last_name', 1, 1, 'var' ],
                [ 'UserLogin', 'Login', 'login', 1, 1, 'var' ],
                [ 'UserPassword', 'Password', 'pw', 0, 1, 'var' ],
                [ 'UserEmail', 'Email', 'email', 0, 1, 'var' ],
    #            [ 'UserEmail', 'Email', 'email', 1, 1, 'var', '$Env{"CGIHandle"}?Action=\
    AgentCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}' ],
                [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var' ],
                [ 'UserComment', 'Comment', 'comment', 1, 0, 'var' ],
                [ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int' ],
            ],
        };
        [...]

Falls Sie Ihre Kundendaten anpassen möchten, ändern Sie die Tabellenspalten oder fügen Sie weitere hinzu:

    ALTER TABLE customer_user ADD phone VARCHAR (250);

Danach fügen Sie Ihre eigenen Spalten dem MAP Array hinzu:

                # var, frontend, storage, shown, required, storage-type, http-link
                [ 'UserPhone', 'Phone', 'phone', 1, 0, 'var' ],

Natürlich können Sie all diese Kundeninformationen dann auch über das Admin-Interface pflegen.

MultiCustomerIDs: Es ist auch möglich mehr als nur eine Kunden-Nummer einen Kunden zu geben. Z. B. wenn ein Kunde auf Tickets anderer Kunden zugreifen muss.

Einfach eine Tabellenspalten hinzufügen in der die Kunden-Nummern eingetragen werden (wie "CustomerID1, CustomerID2, CustomerID3"):

    ALTER TABLE customer_user ADD customer_ids VARCHAR (250);

Nun einen weiteren Eintrag in der CustomerUser MAP Aarray In Kernel/Config.pm hinzufügen:

                # var, frontend, storage, shown, required, storage-type, http-link
                [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var' ],

Natürlich können Sie all die Multi-Kunden-Nummern dann auch über das Admin-Interface pflegen.

## LDAP

Falls Sie ein existierendes LDAP-Verzeichnis mit Ihren Kunden-Benutzern haben, sind Sie in der Lage, dieses auch in OTRS zu nutzen.

Dies ist ein Beispiel für ein LDAP-Backend.

        [Kernel/Config.pm]
        # CustomerUser
        # (customer user ldap backend and settings)
        $Self->{CustomerUser} = {
            Name => 'LDAP Quelle',
            Module => 'Kernel::System::CustomerUser::LDAP',
            Params => {
                # ldap host
                Host => 'bay.csuhayward.edu',
                # ldap base dn
                BaseDN => 'ou=seas,o=csuh',
                # search scope (one|sub)
                SSCOPE => 'sub',
                # The following is valid but would only be necessary if the
                # anonymous user does NOT have permission to read from the LDAP tree
                UserDN => '',
                UserPw => '',
                # in case you want to add always one filter to each ldap query, use
                # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
                AlwaysFilter => '',
                # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
                Params => {
                    port => 389,
                    version => 3,
                },
            },
            # customer uniq id
            CustomerKey => 'uid',
            # customer #
            CustomerID => 'mail',
            CustomerUserListFields => ['uid', 'cn', 'mail'],
            CustomerUserSearchFields => ['uid', 'cn', 'mail'],
            CustomerUserPostMasterSearchFields => ['mail'],
            CustomerUserNameFields => ['givenname', 'sn'],
            Map => [
                # note: Login, Email and CustomerID needed!
                # var, frontend, storage, shown, required, storage-type
                [ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],
                [ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
                [ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
                [ 'UserLogin', 'Login', 'uid', 1, 1, 'var' ],
                [ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
                [ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
                [ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
                [ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ],
                [ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],
            ],
        };
        [...]

Falls Sie Ihre Kundendaten anpassen möchten, fügen Sie Ihre neuen Punkte dem MAP Array hinzu (oder entfernen Sie nicht benötigte Punkte):

                # var, frontend, storage, shown, required, storage-type, http-link
                [ 'UserOrganisation', 'Organisation', 'ou', 1, 0, 'var' ],

MultiCustomerIDs: Es ist auch möglich mehr als nur eine Kunden-Nummer einen Kunden zu geben. Z. B. wenn ein Kunde auf Tickets anderer Kunden zugreifen muss.

Einfach eine Feld im LDAP Baum für die Multi-Kunden-Nummern auswählen in welche die Kunden-Nummern eingetragen werden (wie "CustomerID1, CustomerID2, CustomerID3"):

Nun einen weiteren Eintrag in der CustomerUser MAP Aarray In Kernel/Config.pm hinzufügen:

                # var, frontend, storage, shown, required, storage-type, http-link
                [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var' ],

Natürlich müssen die Multi-Kunden-Nummern vom LDAP Admin gepflegt werden.

Prev | Home | Next
Kunden (min. OTRS 1.1) | Up | Kunden-Authentifizierungs-Backend