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.
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.
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.
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".
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.
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.
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.
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.
OTRS inatoa chaguo la kuthibitisha mawakala na wateja katika mazingira tofauti ya nyuma.
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';
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, }, } };
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';
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';
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";
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, };
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';
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';
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.
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.
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.
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
.