Kutumia mazingira ya nyuma ya nje

Data za mteja
Mazingira ya nyuma ya Mtumiaji mteja
Hifadhidata (Chaguo-msingi)
Mteja mwenye vitambulisho vya mteja vingi (Tiketi za Kampuni)
LDAP
Mteja mwenye vitambulisho vya mteja vingi (Tiketi za Kampuni)
Kutumia zaidi ya mazingira ya nyuma ya mteja ya aina moja na OTRS
Kuhifadhi data za MtejaMtumiaji katika sehemu zinazobadilika.
Mazingira ya nyuma ya kuthibitisha Mawakala na Wateja
Mazingira ya nyuma ya kuthibitisha Mawakala
DB (Chaguo-msingi)
LDAP
HTTPBasicAuth za Wakala
Nusukipenyo
Mazingira ya nyuma ya kuthibitisha Wateja
Hifadhidata (Chaguo-msingi)
LDAP
HTTPBasicAuth za wateja
Nusukipenyo
Kugeuza kukufaa usajili binafsi wa mteja
Kugeuza kiolesura cha wavuti kukufaa
Kuunganisha mteja
Kugeuza kukufaa jedwali la mteja_mtumiaji katika hifadhidata ya OTRS

Data za mteja

OTRS inafanya kazi na sifa nyingi za data za mteja kama jina la mtumiaji, anuani ya barua pepe, nambari ya simu, na kadh. Hizi sifa zinaonyeshwa katika mazingira ya mbele ya Wakala na Mteja, na pia inatumika kwenye uthibitisho wa mteja.

Data za mteja zinazotumika au kuonyeshwa kwenye OTRS zinauwezekano mkubwa wa kugeuzwa kukufaa. Taarifa ifuatayo hata hivyo inahitajika muda wote kwa ajili ya uthibitisho wa mteja:

  • Mtumiaji ingia

  • Anwani ya barua pepe

  • Kitambulisho cha mteja

Tumia parameta zifuatazo za SysConfig kama unataka kuonyesha taarifa za mteja katika kiolesura cha wakala wako.

    # Ticket::Frontend::CustomerInfo*
    # (show customer info on Compose (Phone and Email), Zoom and
    # Queue view)
    $Self->{'Ticket::Frontend::CustomerInfoCompose'} = 1;
    $Self->{'Ticket::Frontend::CustomerInfoZoom'} = 1;

Hati: parameta za usanidi za SysConfig.

Mazingira ya nyuma ya Mtumiaji mteja

Unaweza kutumia aina mbili za mazingira ya nyuma ya mtumiaji, DB na LDAP. Kama tayari una mazingira mengine ya nyuma ya mteja (mf. SAP), inawezekana pia kuandika moduli ambayo inaitumia.

Hifadhidata (Chaguo-msingi)

Mfano 11-1 unaonyesha usanidi wa mazingira ya nyuma ya DB ya mteja, ambayo inatumia data za mteja zilizohifadhiwa kwenye hifadhidata ya OTRS.

Example 4.6. Usanidi wa hifadhidata ya mazingira ya nyuma ya mteja

# CustomerUser (customer database backend and settings)
$Self->{CustomerUser} = {
    Name => 'Database Datasource',
    Module => 'Kernel::System::CustomerUser::DB',
    Params => {
        # if you want to use an external database, add the required settings
#            DSN => 'DBI:odbc:yourdsn',
#            Type => 'mssql', # only for ODBC connections
#            DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
#            User => '',
#            Password => '',
            Table => 'customer_user',

            # CaseSensitive will control if the SQL statements need LOWER()
            #   function calls to work case insensitively. Setting this to
            #   1 will improve performance dramatically on large databases.
            CaseSensitive => 0,
        },
# customer unique id
CustomerKey => 'login',

# customer #
CustomerID => 'customer_id',
CustomerValid => 'valid_id',
    CustomerUserListFields => ['first_name', 'last_name', 'email'],
    CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['email'],
    CustomerUserNameFields => ['title','first_name','last_name'],
    CustomerUserEmailUniqCheck => 1,
#    # show not own tickets in customer panel, CompanyTickets
#    CustomerUserExcludePrimaryCustomerID => 0,
#    # generate auto logins
#    AutoLoginCreation => 0,
#    AutoLoginCreationPrefix => 'auto',
#    # admin can change customer preferences
#    AdminSetPreferences => 1,
#    # cache time to live in sec. - cache any database queries
#    CacheTTL => 0,
#    # just a read only source
#    ReadOnly => 1,
    Map => [
        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
        [ 'UserTitle',      'Title',      'title',      1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'first_name', 1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'last_name',  1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'login',      1, 1, 'var', '', 0 ],
        [ 'UserPassword',   'Password',   'pw',         0, 0, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'email',      1, 1, 'var', '', 0 ],

#        [ 'UserEmail',      'Email', 'email',           1, 1, 'var', '[% Env("CGIHandle") %]?Action=AgentTicketCompose&ResponseID=1&TicketID=[% Data.TicketID %]&ArticleID=[% Data.ArticleID %]', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],

#        [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
        [ 'UserPhone',        'Phone',       'phone',        1, 0, 'var', '', 0 ],
        [ 'UserFax',          'Fax',         'fax',          1, 0, 'var', '', 0 ],
        [ 'UserMobile',       'Mobile',      'mobile',       1, 0, 'var', '', 0 ],
        [ 'UserStreet',       'Street',      'street',       1, 0, 'var', '', 0 ],
        [ 'UserZip',          'Zip',         'zip',          1, 0, 'var', '', 0 ],
        [ 'UserCity',         'City',        'city',         1, 0, 'var', '', 0 ],
        [ 'UserCountry',      'Country',     'country',      1, 0, 'var', '', 0 ],
        [ 'UserComment',      'Comment',     'comments',     1, 0, 'var', '', 0 ],
        [ 'ValidID',          'Valid',       'valid_id',     0, 1, 'int', '', 0 ],
    ],
    # default selections
    Selections => {
        UserTitle => {
            'Mr.' => 'Mr.',
            'Mrs.' => 'Mrs.',
        },
    },
};


Ukitaka kugeuza data za mteja kukufaa, badili vichwa vya safuwima au ongeza mpya kwenye jedwali la mteja_mtumiaji kwenye hifadhidata ya OTRS. Kama mfano, hati hapa chini inaonyesha jinsi ya kuongeza sehemu mpya kwa ajili ya nambari ya chumba.

linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 116 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER TABLE customer_user ADD room VARCHAR (250);
Query OK, 1 rows affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> quit
Bye
linux:~#

Hati: Kuongeza sehemu ya chumba katika jedwali la mteja_mtumiaji.

Sasa ongeza safuwima mpya kwenye mkusanyiko wa RAMANI katika Kernel/Config.pm, kama inavyoonyeshwa katika hati inayofuata.

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserRoom',      'Room',      'room',       0, 1, 'var', '', 0 ],

Hati: Kuongeza sehemu ya chumba kweye faili Kernel/Config.pm.

Pia inawezekana kuhariri taarifa zote za mteja kupitia kiungo cha mteja kwenye kiolesura cha Wakala.

Mteja mwenye vitambulisho vya mteja vingi (Tiketi za Kampuni)

Inawezekana kugawia zaidi ya kitambulisho cha mteja kimoja kwa mteja. Hii inakuwa na manufaa kama mteja anatakiwa kufikia tiketi za wateja wengine, mf. msimamizi anataka kuangalia tiketi za wasaidizi wake. Kama mteja anaweza kufikia tiketi za mteja mwingine, kipengele cha tiketi za kampuni cha OTRS kinatumika. Tiketi za kampuni zinaweza kufikiwa kupitia kiungo "Tiketi za Kampuni" katika paneli ya wateja.

Kutumia tiketi za kampuni, safuwima mpya yenye Vitambulisho ambavyo vinaweza kufikiwa na mteja, inabidi viongezwe kwenye jedwali la mteja_mtumiaji katika hifadhidata ya OTRS (ona Hati chini).

linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 124 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER TABLE customer_user ADD customer_ids VARCHAR (250);
Query OK, 1 rows affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> quit
Bye
linux:~#

Hati: Kuongeza sehemu ya mteja_vitambulisho kwenye jedwali la mteja_mtumiaji.

Sasa safuwima mpya inabidi iongezwe kwenye mkusanyiko wa RAMANI katika Kernel/Config.pm, kama ilivyoonyeshwa kwenye hati chini.

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],

Hati: Kuongeza sehemu ya Vitambulisho vya MtumiajiMteja kwenye faili Kernel/Config.pm.

Sasa safuwima mpya kwa ajili ya Vitambulisho vingi vya mteja inaweza kuhaririwa kupitia kiolesura cha Wakala, katika kifungu cha usimamizi wa mteja.

Kuhakikisha mteja mmoja anaweza kufikia tiketi za wateja wengine, ongeza vitambulisho vya hawa watumiaji wengine katika sehemu mpya kwa ajili ya vitambulisho vingi vya mteja. Kila kitambulisho lazima kitenganishwe na alama yanuktamkato (ona Mfano 11-2 chini).

Example 4.7. Kutumia tiketi za kampuni na mazingira ya nyuma ya DB

Wateja A,B na C wapo kwenye mfumo wako, na A anataka kufikia tiketi za B na C kupitia paneli ya mteja. B na C hawatakiwi kufikia tiketi za watumiaji wengine.

Kutambua mpangilio huu, badilisha jedwali la mteja_mtumiaji na miunganiko katika Kernel/Config.pm kama ilivyoelezwa hapo juu. Kisha pakia mipangilio ya mteja A kupitia kiungo cha Mteja katika kiolesura cha Wakala au kupitia kurasa ya Msimamizi. Kama mipangilio imeonyeshwa, ongeza kwenye sehemu ya Vitambulisho vya Wateja thamani "B;C".


LDAP

Kama una mpangilio orodha wa LDAP na data za mteja wako, unaweza kuitumia kama mazingira ya nyuma ya mteja na OTRS, kama ilivyo onyeshwa kwenye mfano 11-3.

Example 4.8. Usanidi wa LDAP ya mazingira yanyuma ya mteja

# CustomerUser
# (customer ldap backend and settings)
$Self->{CustomerUser} = {
    Name => 'LDAP Data Source',
    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 => '',
            # if the charset of your ldap server is iso-8859-1, use this:
#            SourceCharset => 'iso-8859-1',

            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
            Params => {
                port => 389,
                timeout => 120,
                async => 0,
                version => 3,
            },
    },
    # customer unique id
    CustomerKey => 'uid',
    # customer #
    CustomerID => 'mail',
    CustomerUserListFields => ['cn', 'mail'],
    CustomerUserSearchFields => ['uid', 'cn', 'mail'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    # show not own tickets in customer panel, CompanyTickets
    CustomerUserExcludePrimaryCustomerID => 0,
    # add an ldap filter for valid users (expert setting)
#    CustomerUserValidFilter => '(!(description=locked))',
    # administrator can't change customer preferences
    AdminSetPreferences => 0,
#    # cache time to live in sec. - cache any database queries
#    CacheTTL => 0,
    Map => [
        # note: Login, Email and CustomerID are mandatory!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#        [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
    ],
};


Kama sifa za ziada za mteja zimehifadhiwa kwenye mpangilio orodha wa LDAP yako, kwa mfano jina la meneja, namba ya simu ya mkononi, au idara, na kama unataka kuonyesha taarifa hizi kwenye OTRS, panua mkusanyiko wa RAMANI kwenye Kernel/Config.pm na maingizo kwa sifa hizi, kama ilivyoonyeshwa kwenye hati ifuatayo.

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],

Hati: Kuongeza sehemu mpya kwenye Kernel/Config.pm file.

Mteja mwenye vitambulisho vya mteja vingi (Tiketi za Kampuni)

Inawezekana kugawia zaidi ya Kitambulisho kimoja cha Mteja kwa mteja, ukiwa unatumia mazingira ya nyuma ya LDAP. Kutumia tiketi za kampuni, sehemu mpya inabidi iongezwe kwenye mpangilio orodha wa LDAP ambayo ina vitambulisho vinavyofikika na mteja.

Kama sehemu mpya kwenye mpangilio orodha wa LDAP imetengenezwa, ingizo jipya inabidi liongezwe kwenye mkusanyiko wa RAMANI katika Kernel/Config.pm, kama ilivyoonyeshwa kwenye hati chini.

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],

Hati: Kuunganisha sehemu mpya kwenye Kernel/Config.pm file.

Sehemu kwa ajili ya vitambulisho vingi vya mteja inabidi kuhaririwa moja kwa moja katika mpangilio orodha wa LDAP. OTRS inaweza kusoma tu kutoka kwenye LDAp, sio kuandika.

Kuhakikisha ufikivu wa mteja kwenye tiketi za wateja wengine, ongeza Vitambulisho vya wateja ambao tiketi zao zinatakiwa kufikiwa kwenye sehemu mpya katika mpangilio orodha wako wa LDAP. Kila kitambulisho lazima kigawanywe kwa alama nuktamkato (ona Mfano 11-4 chini) .

Example 4.9. Kutumia tiketi za Kampuni na mazingira ya nyuma ya LDAP

Wateja A, B na C wapo kwenye mfumo wako na A anataka kuwa na ufikivu wa tiketi za B na C kupitia paneli ya mteja. B na C hawatakiwi kuwa na ufikivu wa tiketi za wateja wengine.

Kutambua mpangilio huu, badilisha mpangilio orodha wa LDAP na miunganiko katika Kernel/Config.pm kama ilivyoelezwa juu. Kisha ongeza kwenye sehemu ya Vitambulisho vya wateja thamani "B;C" kwa mteja A katika mpangilio orodha wa LDAP.


Kutumia zaidi ya mazingira ya nyuma ya mteja ya aina moja na OTRS

Kama ukitaka kutumia zaidi ya chanzo kimoja cha data za mteja zinazotumika na OTRS (mf. mazingira ya nyuma ya LDAP na hifadhidata), parameta ya usanidi ya MtejaMtumiaji lazima ipanuliwe na nambari, mf. "MtejaMtumiaji 1", "MtejaMtumiaji2" (ona Mfano 11-5 chini).

Example 4.10. Kutumia zaidi ya mazingira ya nyuma ya mteja ya aina moja na OTRS

Mfano unaofuata wa usanidi unaonyesha matumizi ya mazingira ya nyuma ya mteja ya LDAP na hifadhidata katika OTRS.

# 1. Customer user backend: DB
# (customer database backend and settings)
$Self->{CustomerUser1} = {
    Name => 'Customer Database',
    Module => 'Kernel::System::CustomerUser::DB',
    Params => {
        # if you want to use an external database, add the
        # required settings
#        DSN => 'DBI:odbc:yourdsn',
#        Type => 'mssql', # only for ODBC connections
#        DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
#        User => '',
#        Password => '',
        Table => 'customer_user',
    },
    # customer unique id
    CustomerKey => 'login',
    # customer #
    CustomerID => 'customer_id',
    CustomerValid => 'valid_id',
    CustomerUserListFields => ['first_name', 'last_name', 'email'],
    CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['email'],
    CustomerUserNameFields => ['title','first_name','last_name'],
    CustomerUserEmailUniqCheck => 1,
#    # show not own tickets in customer panel, CompanyTickets
#    CustomerUserExcludePrimaryCustomerID => 0,
#    # generate auto logins
#    AutoLoginCreation => 0,
#    AutoLoginCreationPrefix => 'auto',
#    # admin can change customer preferences
#    AdminSetPreferences => 1,
#    # cache time to live in sec. - cache any database queries
#    CacheTTL => 0,
#    # just a read only source
#    ReadOnly => 1,
    Map => [

        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
        [ 'UserTitle',      'Title',      'title',        1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'first_name',   1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'last_name',    1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'login',        1, 1, 'var', '', 0 ],
        [ 'UserPassword',   'Password',   'pw',           0, 0, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'email',        1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'customer_id',  0, 1, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'phone',        1, 0, 'var', '', 0 ],
        [ 'UserFax',        'Fax',        'fax',          1, 0, 'var', '', 0 ],
        [ 'UserMobile',     'Mobile',     'mobile',       1, 0, 'var', '', 0 ],
        [ 'UserStreet',     'Street',     'street',       1, 0, 'var', '', 0 ],
        [ 'UserZip',        'Zip',        'zip',          1, 0, 'var', '', 0 ],
        [ 'UserCity',       'City',       'city',         1, 0, 'var', '', 0 ],
        [ 'UserCountry',    'Country',    'country',      1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'comments',     1, 0, 'var', '', 0 ],
        [ 'ValidID',        'Valid',      'valid_id',     0, 1, 'int', '', 0 ],
    ],
    # default selections
    Selections => {
        UserTitle => {
            'Mr.' => 'Mr.',
            'Mrs.' => 'Mrs.',
        },
    },
};

# 2. Customer user backend: LDAP
# (customer ldap backend and settings)
$Self->{CustomerUser2} = {
    Name => 'LDAP Datasource',
    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 => '',
        # if the charset of your ldap server is iso-8859-1, use this:
#        SourceCharset => 'iso-8859-1',

        # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
        Params => {
            port => 389,
            timeout => 120,
            async => 0,
            version => 3,
        },
    },
    # customer unique id
    CustomerKey => 'uid',
    # customer #
    CustomerID => 'mail',
    CustomerUserListFields => ['cn', 'mail'],
    CustomerUserSearchFields => ['uid', 'cn', 'mail'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    # show not own tickets in customer panel, CompanyTickets
    CustomerUserExcludePrimaryCustomerID => 0,
    # add a ldap filter for valid users (expert setting)
#    CustomerUserValidFilter => '(!(description=locked))',
    # admin can't change customer preferences
    AdminSetPreferences => 0,
    Map => [
        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#        [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
    ],
};


Inawezekana kuunganisha mpaka mazingira ya nyuma 10 tofauti ya mteja. Tumia kiolesura cha usimamizi cha mteja katika OTRS kuona au kuhariri (tukiamini utawala data umewezeshwa) data zote za mteja.

Kuhifadhi data za MtejaMtumiaji katika sehemu zinazobadilika.

Mara nyingine inaweza kuwa na manufaa kuhifadhi data za MtejaMtumiaji katika sehemu zinazobadilika za tiketi, kwa fano kutengeneza takwimu muhimu kwenye data hizi.

Thamani za sehemu zinazobadilika zinasetiwa tiketi inapotengenezwa au pale mteja wa tiketi anapobadilishwa. Thamani za sehemu zinazobadilika zinachukuliwa kutoka kwenye data za mteja. Hii inafanya kazi kwa mazingira yoye ya nyuma, lakini ni ya manufaa zaidi kwa mazingir aya nyuma ya LDAP.

Kuamilisha hiki kipengele cha hiari cha OTRS, tafadhali amilisha mipangilio "Tiketi::ModuliTukioTuma###930-SehemuInayobadilikaKutokaKwaMtejaMtumiaji" na "SehemuInayobadilikaKutokaKwaMtejaMtumiaji::Kuunganisha". Mpangilio wa mwisho una usanidi ambao ingizo la sehemu ya MtumiajiMteja linatakiwa kuhifadhiwa katika sehemu inayobadilika ya tiketi. Sehemu inabidi ziwepo kwenye mfumo na zinatakiwa kuwezeshwa kwa ajili ya WakalaTiketiHuruNakala, ili zisetiwe kwa mikono. Hazitakiwi kuwezeshwa kwa ajili ya WakalaTiketiSimu, WakalaTiketiBaruapepe na WakalaTiketiMteja. Kama zilikuwa, inabidi zitangulie thamani zilizosetiwa kiotomatiki.

Mazingira ya nyuma ya kuthibitisha Mawakala na Wateja

OTRS inatoa chaguo la kuthibitisha mawakala na wateja katika mazingira tofauti ya nyuma.

Mazingira ya nyuma ya kuthibitisha Mawakala

DB (Chaguo-msingi)

Mazingira ya nyuma yatumikayo kwa kawaida ni hifadhidata ya OTRS. Unaweza kuongeza au kuhariri mawakala kupitia kiolesura cha usimamizi wa mteja katikaKurasa ya Msimamizi(ona Mfano 11-6 chini).

Example 4.11. Thibitisha mawakala katika mazingira ya nyuma ya DB.

    $Self->{'AuthModule'} = 'Kernel::System::Auth::DB';


LDAP

Kama mpangilio orodha wa LDAP una data zote zilizohifadhiwa za wakala wako, unaweza kutumia moduli ya LDAP kuthibitisha watumiaji wako katika OTRS (ona Mfano 11-7 chini). Hii moduli ina ufikivu wa kusoma tu kwenye matawi ya LDAP, inamaanisha huwezi kuhariri data zako za mtumiaji kupitia kiolesura cha usimamizi wa mteja.

Example 4.12. Thibitisha mawakala katika mazingira ya nyuma ya LDAP.

# This is an example configuration for an LDAP auth. backend.
# (Make sure Net::LDAP is installed!)
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'ldap.example.com';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
$Self->{'AuthModule::LDAP::UID'} = 'uid';

# Check if the user is allowed to auth in a posixGroup
# (e. g. user needs to be in a group xyz to use otrs)
$Self->{'AuthModule::LDAP::GroupDN'} = 'cn=otrsallow,ou=posixGroups,dc=example,dc=com';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'memberUid';
# for ldap posixGroups objectclass (just uid)
#  $Self->{'AuthModule::LDAP::UserAttr'} = 'UID';
# for non ldap posixGroups objectclass (with full user dn)
#  $Self->{'AuthModule::LDAP::UserAttr'} = 'DN';

# The following is valid but would only be necessary if the
# anonymous user do NOT have permission to read from the LDAP tree
$Self->{'AuthModule::LDAP::SearchUserDN'} = '';
$Self->{'AuthModule::LDAP::SearchUserPw'} = '';

# in case you want to add always one filter to each ldap query, use
# this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
$Self->{'AuthModule::LDAP::AlwaysFilter'} = '';

# in case you want to add a suffix to each login name, then
# you can use this option. e. g. user just want to use user but
# in your ldap directory exists user@domain.
#    $Self->{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
$Self->{'AuthModule::LDAP::Params'} = {
    port => 389,
    timeout => 120,
    async => 0,
    version => 3,
};


Mipangilio ya usanidi iliyoonyeshwa kwenye hati hapo chini inaweza kutumika kulandanisha data zote za mtumiaji kutoka kwenye mpangilio orodha wako wa LDAP kwenda kwenye hifadhidata yako ya OTRS ya ndani. Hii inapunguza idadi ya maombi kwenda kwenye seva yako ya LDAP na inaongeza kasi ya uthibitisho na OTRS. Ulandanishi wa data unafanyika pale wakala anapojithibitisha kwa mara ya kwanza. Hata hivyo hiyo data inaweza kulandanishwa na hifadhidata ya ndani ya OTRS, mpangilio orodha wa LDAP ni mfano wa mwisho wa uthibitisho, kwa hiyo mtumiaji aliye lemaa aliye katika matawi ya LDAP hawezi kujithibitisha kwenye OTRS, hata kama data za akaunti tayari zimehifadhiwa kwenye hifadhidata ya OTRS. Data za wakala kwenye mpangilio orodha wa LDAP haziwezi kuhaririwa kupitia kiolesura cha tovuti cha OTRS, kwa hiyo data inabidi isimamiwe moja kwa moja katika matawi ya LDAP.

# defines AuthSyncBackend (AuthSyncModule) for AuthModule
# if this key exists and is empty, there won't be a sync.
# example values: AuthSyncBackend, AuthSyncBackend2
$Self->{'AuthModule::UseSyncBackend'} = 'AuthSyncBackend';

# agent data sync against ldap
$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = 'ldap://ldap.example.com/';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=otrs, dc=org';
$Self->{'AuthSyncModule::LDAP::UID'} = 'uid';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'uid=sys, ou=user, dc=otrs, dc=org';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'some_pass';
$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
    # DB -> LDAP
    UserFirstname => 'givenName',
    UserLastname  => 'sn',
    UserEmail     => 'mail',
};
[...]

# AuthSyncModule::LDAP::UserSyncInitialGroups
# (sync following group with rw permission after initial create of first agent
# login)
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
    'users',
];

Hati: Kulandanisha data za mtumiaji kutoka kwenye mpangilio orodha wa LDAP kwenda kwenye hifadhidata ya OTRS.

Alternatively, you can use LDAP groups to determine group memberships or roles in OTRS. For more information and examples, see Kernel/Config/Defaults.pm. Here is an example for synchronizing from LDAP into OTRS groups.

# Attributes needed for group syncs
# (attribute name for group value key)
$Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'memberUid';
# (select the attribute for type of group content UID/DN for full ldap name)
# $Self->{'AuthSyncModule::LDAP::UserAttr'} = 'UID';
# $Self->{'AuthSyncModule::LDAP::UserAttr'} = 'DN';

AuthSyncModule::LDAP::UserSyncGroupsDefinition
# (If "LDAP" was selected for AuthModule and you want to sync LDAP
# groups to otrs groups, define the following.)
$Self->{'AuthSyncModule::LDAP::UserSyncGroupsDefinition'} = {
    # your ldap group
    'cn=agent,o=otrs' => {
        # otrs group(s)
        'admin' => {
            # permission
            rw => 1,
            ro => 1,
        },
        'faq' => {
            rw => 0,
            ro => 1,
        },
    },
    'cn=agent2,o=otrs' => {
        'users' => {
            rw => 1,
            ro => 1,
        },
    }
};
    

HTTPBasicAuth za Wakala

Kama unataka kutekeleza suluhisho la "saini moja kwenye" kwa mawakala wako wote, unaweza kutumia uthibitisho msingi wa HTTP (kwa mifumo yako yote) na moduli ya HTTPBasicAuth ya OTRS (ona Mfano 11-8 chini).

Example 4.13. Halalisha Wakala kwa kutumia HTTPBasic

# This is an example configuration for an apache ($ENV{REMOTE_USER})
# auth. backend. Use it if you want to have a singe login through
# apache http-basic-auth
$Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';

# Note:
#
# If you use this module, you should use as fallback
# the following configuration settings if the user is not authorized
# apache ($ENV{REMOTE_USER})
$Self->{LoginURL} = 'http://host.example.com/not-authorised-for-otrs.html';
$Self->{LogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html';


Nusukipenyo

Parameta za usanidi zilizoonyeshwa kwenye Mfano 11-9 zinaweza kutumika kuthibitisha mawakala katika seva ya Radius.

Example 4.14. Thibitisha mawakala katika mazingira ya nyuma ya Radius.

# This is example configuration to auth. agents against a radius server
$Self->{'AuthModule'} = 'Kernel::System::Auth::Radius';
$Self->{'AuthModule::Radius::Host'} = 'radiushost';
$Self->{'AuthModule::Radius::Password'} = 'radiussecret';


Mazingira ya nyuma ya kuthibitisha Wateja

Hifadhidata (Chaguo-msingi)

Chaguo-msingi la kithibitisho cha mtumiaji cha mazingira ya nyuma katika OTRS ni hifadhidata ya OTRS. Kwa mazingira haya ya nyuma, unaweza kuhariri data zote za mteja kupitia kiolesura cha wavuti cha OTRS (ona Mfano 11-10 chini).

Example 4.15. Uthibitisho wa mtumiaji mteja katika mazingira ya nyuma ya DB

# This is the auth. module against the otrs db
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::DB';
$Self->{'Customer::AuthModule::DB::Table'} = 'customer_user';
$Self->{'Customer::AuthModule::DB::CustomerKey'} = 'login';
$Self->{'Customer::AuthModule::DB::CustomerPassword'} = 'pw';
#$Self->{'Customer::AuthModule::DB::DSN'} = "DBI:mysql:database=customerdb;host=customerdbhost";
#$Self->{'Customer::AuthModule::DB::User'} = "some_user";
#$Self->{'Customer::AuthModule::DB::Password'} = "some_password";


LDAP

Kama una mpangilio orodha wa LDAP wenye data zako zote za mteja, unaweza kutumia moduli ya LDAP kuthibitisha wateja wako katika OTRS (ona Mfano 11-11 chini). Kwa kuwa moduli hii ina uwezo wa kusoma tu kwa mazingira ya nyuma ya LDAP, haiwezekani kuhariri data za mteja kupitia kiolesura cha wavuti cha OTRS.

Example 4.16. Uthibitisho wa mtumiaji mteja katika mazingira ya nyuma ya LDAP

# This is an example configuration for an LDAP auth. backend.
# (make sure Net::LDAP is installed!)
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'ldap.example.com';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'uid';

# Check if the user is allowed to auth in a posixGroup
# (e. g. user needs to be in a group xyz to use otrs)
$Self->{'Customer::AuthModule::LDAP::GroupDN'} = 'cn=otrsallow,ou=posixGroups,dc=example,dc=com';
$Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'memberUid';
# for ldap posixGroups objectclass (just uid)
$Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'UID';
# for non ldap posixGroups objectclass (full user dn)
#$Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';

# The following is valid but would only be necessary if the
# anonymous user does NOT have permission to read from the LDAP tree
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = '';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = '';

# in case you want to add always one filter to each ldap query, use
# this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter'} = '';

# in case you want to add a suffix to each customer login name, then
# you can use this option. e. g. user just want to use user but
# in your ldap directory exists user@domain.
#$Self->{'Customer::AuthModule::LDAP::UserSuffix'} = '@domain.com';

# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
$Self->{'Customer::AuthModule::LDAP::Params'} = {
    port => 389,
    timeout => 120,
    async => 0,
    version => 3,
};


HTTPBasicAuth za wateja

Kama unataka kutekeleza suluhisho la "saini moja kwenye" kwa wateja watumiaji wako wote, unaweza kutumia uthibitisho wa HTTPBasic (kwa mifumo yako yote) na kutumia moduli ya HTTPBasicAuth na OTRS (hakuna kuingia kunakohitajika na OTRS tena). Ona Mfano 11-12 chini.

Example 4.17. Uthibitisho wa Mteja kwa kutumia HTTPBasic

# This is an example configuration for an apache ($ENV{REMOTE_USER})
# auth. backend. Use it if you want to have a singe login through
# apache http-basic-auth
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::HTTPBasicAuth';

# Note:
# If you use this module, you should use the following
# config settings as fallback, if user isn't login through
# apache ($ENV{REMOTE_USER})
$Self->{CustomerPanelLoginURL} = 'http://host.example.com/not-authorised-for-otrs.html';
$Self->{CustomerPanelLogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html';


Nusukipenyo

Mipangilio iliyoonyeshwa kwenye Mfano 11-13 inaweza kutumika kuthibitisha wateja wako dhidi ya seva ya Radius.

Example 4.18. Uthibitisho wa mtumiaji mteja katika mazingira ya nyuma ya Radius

# This is a example configuration to auth. customer against a radius server
$Self->{'Customer::AuthModule'} = 'Kernel::System::Auth::Radius';
$Self->{'Customer::AuthModule::Radius::Host'} = 'radiushost';
$Self->{'Customer::AuthModule::Radius::Password'} = 'radiussecret';


Kugeuza kukufaa usajili binafsi wa mteja

Inawezekana kugeuza kukufaa usajili binafsi kwa ajili ya wateja wapya, inafikika kupitia paneli ya customer.pl. Sehemu mpya za hiari au zinazohitajika, kama nambari ya chumba, anwani au hali zinaweza kuongezwa.

Mfano ufwatao unaonyesha jinsi unaweza kubainisha sehemu inayohitajika katika hifadhidata ya mteja, katika kesi hii hifadhi nambari ya chumba cha mteja.

Kugeuza kiolesura cha wavuti kukufaa

Kuonyesha sehemu mpya ya nambari ya chumba katika kiolesura cha tovuti cha customer.pl, faili la .dtl ambalo lina jukumu la muonekano katika hiki kiolesura lazima libadilishwe. Hariri faili la Kernel/Output/HTML/Standard/CustomerLogin.dtl, ongeza sehemu mpya maeneo ya mstari wa 80 (ona Hati chini).

[...]
<div class="NewLine">
    <label for="Room">[% Translate("Room{CustomerUser}") | html %]</label>
    <input title="[% Translate("Room Number") | html %]" name="Room" type="text" id="UserRoom" maxlength="50" />
</div>
[...]

Hati: Kuonyesha sehemu mpya katika kiolesura cha wavuti.

Kuunganisha mteja

Katika hatua inayofuata, muunganiko wa mteja inabidi upanuliwe na ingizo jipya kutoka kwenye nambari mpya. Kuhakikisha kwamba mabadiliko hayapotei baada ya usasishaji, weka mipangilio ya "MtumiajiMteja" kutoka kwenye Kernel/Config/Defaults.pm kwenda kwenye Kernel/Config.pm. Sasa badilisha mkusanyiko wa RAMANI na ongeza sehemu mpya ya nambari ya chumba, kama ilivyoonyeshwa kwenye hati chini.

# CustomerUser
# (customer database backend and settings)
$Self->{CustomerUser} = {
    Name => 'Database Backend',
    Module => 'Kernel::System::CustomerUser::DB',
    Params => {
        # if you want to use an external database, add the
        # required settings
#        DSN => 'DBI:odbc:yourdsn',
#        Type => 'mssql', # only for ODBC connections
#        DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
#        User => '',
#        Password => '',
        Table => 'customer_user',
    },
    # customer unique id
    CustomerKey => 'login',
    # customer #
    CustomerID => 'customer_id',
    CustomerValid => 'valid_id',
    CustomerUserListFields => ['first_name', 'last_name', 'email'],
#    CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'],
    CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['email'],
    CustomerUserNameFields => ['title', 'first_name', 'last_name'],
    CustomerUserEmailUniqCheck => 1,
#    # show not own tickets in customer panel, CompanyTickets
#    CustomerUserExcludePrimaryCustomerID => 0,
#    # generate auto logins
#    AutoLoginCreation => 0,
#    AutoLoginCreationPrefix => 'auto',
#    # admin can change customer preferences
#    AdminSetPreferences => 1,
#    # cache time to live in sec. - cache database queries
#    CacheTTL => 0,
#    # just a read only source
#    ReadOnly => 1,
    Map => [

        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
        [ 'UserTitle',      'Title',      'title',       1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'first_name',  1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'last_name',   1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'login',       1, 1, 'var', '', 0 ],
        [ 'UserPassword',   'Password',   'pw',          0, 0, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'email',       1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'phone',       1, 0, 'var', '', 0 ],
        [ 'UserFax',        'Fax',        'fax',         1, 0, 'var', '', 0 ],
        [ 'UserMobile',     'Mobile',     'mobile',      1, 0, 'var', '', 0 ],
        [ 'UserRoom',       'Room',       'room',        1, 0, 'var', '', 0 ],
        [ 'UserStreet',     'Street',     'street',      1, 0, 'var', '', 0 ],
        [ 'UserZip',        'Zip',        'zip',         1, 0, 'var', '', 0 ],
        [ 'UserCity',       'City',       'city',        1, 0, 'var', '', 0 ],
        [ 'UserCountry',    'Country',    'country',     1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'comments',    1, 0, 'var', '', 0 ],
        [ 'ValidID',        'Valid',      'valid_id',    0, 1, 'int', '', 0 ],
    ],
    # default selections
    Selections => {
        UserTitle => {
            'Mr.' => 'Mr.',
            'Mrs.' => 'Mrs.',
        },
    },
};

Hati: Kubadilisha miunganiko ya mkusanyiko.

Kugeuza kukufaa jedwali la mteja_mtumiaji katika hifadhidata ya OTRS

Hatua ya mwisho ni kuongeza nambari mpya ya safuwima ya chumba katika jedwali la mteja_mtumiaji kwenye hifadhidata ya OTRS (ona Kielelezo chini). Katika safuwima hii, maingizo ya nambari ya chumba yatahifadhiwa.

linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER TABLE customer_user ADD room VARCHAR (200);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> quit
Bye
linux:~#

Hati: Kuongeza safuwima mpya kwenye jedwali la mteja_mtumiaji.

Sasa sehemu mpya ya chumba lazima ionyeshwe katika paneli ya taarifa za Mteja kama imejazwa, na kwenye skrini za usimamizi wa Mteja Mtumiaji. Pia, wateja wapya wanatakiwa kuingiza namba zao za chumba kama wakisajili akaunti mpya. Kama ukitumia OTRS katika Microsoft IIS, unatakiwa kuanzisha upya seva ya tovuti kuamilisha mabadiliko yaliyofanywa katika Config.pm.