Schlagwörter: 

Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #35349
      Marc
      Teilnehmer

        Hallo zusammen,

        ich habe eine Docker Installation von Otobo und scheitere schon eine Weile an der LDAP Anbindung. Ich würde gerne die lokale Datenbank als auch LDAP für Kundenbenutzer nutzen. Egal ob ich die Konfig aus der Doku: Benutzer — OTOBO Administration Manual 11.0 Dokumentation  oder aus der Defaults.pm und ob ich die LDAP oder lokale Datenbank Konfig nutze. Wenn ich die Config.pm speichere, dann bekomme ich einen internal Server error im Web angezeigt.

        Was mache ich falsch?

        Aktuell in der Config.pm:

         

        # CustomerUser
        # (customer user database backend and settings)
        $Self->{CustomerUser} = {
        Name => Translatable(‚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‘,
        # ForeignDB => 0, # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields

        # CaseSensitive defines if the data storage of your DBMS is case sensitive and will be
        # preconfigured within the database driver by default.
        # If the collation of your data storage differs from the default settings,
        # you can set the current behavior ( either 1 = CaseSensitive or 0 = CaseINSensitive )
        # to fit your environment.
        #
        # CaseSensitive => 0,

        # SearchCaseSensitive will control if the searches within the data storage are performed
        # case sensitively (if possible) or not. Change this option to 1, if you want to search case sensitive.
        # This can improve the performance dramatically on large databases.
        SearchCaseSensitive => 0,
        },

        # customer unique id
        CustomerKey => ‚login‘,

        # customer #
        CustomerID => ‚customer_id‘,
        CustomerValid => ‚valid_id‘,

        # The last field must always be the email address so that a valid
        # email address like „John Doe“ <john.doe@domain.com> can be constructed from the fields.
        CustomerUserListFields => [ ‚first_name‘, ‚last_name‘, ‚email‘ ],

        # CustomerUserListFields => [‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘, ‚email‘],
        CustomerUserSearchFields => [ ‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘ ],
        CustomerUserSearchPrefix => ‚*‘,
        CustomerUserSearchSuffix => ‚*‘,
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => [‚email‘],

        CustomerUserNameFields => [ ‚title‘, ‚first_name‘, ‚last_name‘ ],
        CustomerUserEmailUniqCheck => 1,

        # # Configures the character for joining customer user name parts. Join single space if it is not defined.
        # # CustomerUserNameFieldsJoin => “,

        # # show now own tickets in customer panel, CompanyTickets
        # CustomerUserExcludePrimaryCustomerID => 0,
        # # generate auto logins
        # AutoLoginCreation => 0,
        # # generate auto login prefix
        # AutoLoginCreationPrefix => ‚auto‘,
        # # admin can change customer preferences
        # AdminSetPreferences => 1,
        # use customer company support (reference to company, See CustomerCompany settings)
        CustomerCompanySupport => 1,
        # cache time to live in sec. – cache any database queries
        CacheTTL => 60 * 60 * 24,
        # # Consider this source read only.
        # ReadOnly => 1,
        Map => [

        # Info about dynamic fields:
        #
        # Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
        # The given storage (third column) then can also be used within the following configurations (see above):
        # CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
        #
        # Note that the columns ‚frontend‘ and ‚readonly‘ will be ignored for dynamic fields.

        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
        [ ‚UserTitle‘, Translatable(‚Title or salutation‘), ‚title‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserFirstname‘, Translatable(‚Firstname‘), ‚first_name‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserLastname‘, Translatable(‚Lastname‘), ‚last_name‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserLogin‘, Translatable(‚Username‘), ‚login‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserPassword‘, Translatable(‚Password‘), ‚pw‘, 0, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserEmail‘, Translatable(‚Email‘), ‚email‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        # [ ‚UserEmail‘, Translatable(‚Email‘), ‚email‘, 1, 1, ‚var‘, ‚[% Env(„CGIHandle“) %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %>
        [ ‚UserCustomerID‘, Translatable(‚CustomerID‘), ‚customer_id‘, 0, 1, ‚var‘, “, 0, undef, undef ],
        # [ ‚UserCustomerIDs‘, Translatable(‚CustomerIDs‘), ‚customer_ids‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserPhone‘, Translatable(‚Phone‘), ‚phone‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserFax‘, Translatable(‚Fax‘), ‚fax‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserMobile‘, Translatable(‚Mobile‘), ‚mobile‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserStreet‘, Translatable(‚Street‘), ’street‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserZip‘, Translatable(‚Zip‘), ‚zip‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserCity‘, Translatable(‚City‘), ‚city‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserCountry‘, Translatable(‚Country‘), ‚country‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserComment‘, Translatable(‚Comment‘), ‚comments‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚ValidID‘, Translatable(‚Valid‘), ‚valid_id‘, 0, 1, ‚int‘, “, 0, undef, undef ],

        # Dynamic field example
        # [ ‚DynamicField_Name_X‘, undef, ‚Name_X‘, 0, 0, ‚dynamic_field‘, undef, 0, undef, undef ],
        ],

        # default selections
        Selections => {

        # UserTitle => {

        # ‚Mr.‘ => Translatable(‚Mr.‘),
        # ‚Mrs.‘ => Translatable(‚Mrs.‘),
        # },
        },
        };

         

        Vielen Dank im Voraus :)

      • #35350
        marcel-graf
        Teilnehmer

          Es gib ja zum einen den Bereich „Customer User LDAP Backend and Settings“ und den Bereich „Customer authentication settings“

          Sieht so aus, als ob die Cutomer Authentication fehlt.

          im Forum gibt es einige Beispiele: https://otobo.io/forums/topic/kundenbenutzer-ueber-ldap-automatisch-einem-kunden-zuweisen/

          Gruß Marcel

          • Diese Antwort wurde vor 2 Wochen, 6 Tage von marcel-graf geändert.
        • #35407
          Marc
          Teilnehmer

            Hallo,
            danke für deine Antwort. Mir ist bewusst, dass ich den LDAP Teil nicht in der Konfig oben habe.
            Ich scheitere bereits an folgendem:

            Kopiere ich aus der Defaults.pm folgenden Abschnitt (Lokale Anmeldung) und füge diesen in die Config.pm ein, dann ist nichts mehr möglich. Im Browser wird dann nur noch Internal Server Error angezeigt.
            Ich verstehe nicht ganz wieso das passiert. Immerhin ist es doch genau dasselbe, was in der Defaults.pm steht.

            Der otobo-daemon-1 wird als unhealthy angezeigt. Im Log steht folgendes: Kernel::Config could not be loaded: at /opt/otobo/Kernel/System/ObjectManager.pm line 294.
            Manage the OTOBO daemon process.

             

            Ausschnitt:

            # Data source 1: customer user database back end and settings.
            $Self->{CustomerUser1} = {
            Name   => ‚Database Backend‘,
            Module => ‚Kernel::System::CustomerUser::DB‘,
            Params => {
            #            DSN => ‚DBI:odbc:yourdsn‘,
            #            DSN => ‚DBI:mysql:database=customerdb;host=customerdbhost‘,
            #            User => “,
            #            Password => “,
            Table => ‚customer_user‘,
            SearchCaseSensitive => 0,
            },

            # customer unique id
            CustomerKey => ‚login‘,

            # customer #
            CustomerID    => ‚customer_id‘,
            CustomerValid => ‚valid_id‘,

            # The last field must always be the email address so that a valid
            #   email address like „John Doe“ <john.doe@domain.com> can be constructed from the fields.
            CustomerUserListFields => [ ‚first_name‘, ‚last_name‘, ‚email‘ ],

            #        CustomerUserListFields => [‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘, ‚email‘],
            CustomerUserSearchFields           => [ ‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘ ],
            CustomerUserSearchPrefix           => ‚*‘,
            CustomerUserSearchSuffix           => ‚*‘,
            CustomerUserSearchListLimit        => 250,
            CustomerUserPostMasterSearchFields => [‚email‘],
            CustomerUserNameFields             => [ ‚title‘, ‚first_name‘, ‚last_name‘ ],
            CustomerUserEmailUniqCheck         => 1,

            #        # Configures the character for joining customer user name parts. Join single space if it is not defined.
            #        # CustomerUserNameFieldsJoin => “,

            #        # show now own tickets in customer panel, CompanyTickets
            #        CustomerUserExcludePrimaryCustomerID => 0,
            #        # generate auto logins
            #        AutoLoginCreation => 0,
            #        # generate auto login prefix
            #        AutoLoginCreationPrefix => ‚auto‘,
            #        # admin can change customer preferences
            #        AdminSetPreferences => 1,
            # use customer company support (reference to company, See CustomerCompany settings)
            CustomerCompanySupport => 1,
            # cache time to live in sec. – cache any database queries
            CacheTTL => 60 * 60 * 24,
            #        # Consider this source read only.
            #        ReadOnly => 1,
            Map => [

            # Info about dynamic fields:
            #
            # Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
            # The given storage (third column) then can also be used within the following configurations (see above):
            # CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
            #
            # Note that the columns ‚frontend‘ and ‚readonly‘ will be ignored for dynamic fields.

            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
            [ ‚UserTitle‘,        Translatable(‚Title or salutation‘), ‚title‘,          1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserFirstname‘,    Translatable(‚Firstname‘),           ‚first_name‘,     1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserLastname‘,     Translatable(‚Lastname‘),            ‚last_name‘,      1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserLogin‘,        Translatable(‚Username‘),            ‚login‘,          1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserPassword‘,     Translatable(‚Password‘),            ‚pw‘,             0, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserEmail‘,        Translatable(‚Email‘),               ‚email‘,          1, 1, ‚var‘, “, 0, undef, undef ],
            #            [ ‚UserEmail‘,        Translatable(‚Email‘),               ‚email‘,          1, 1, ‚var‘, ‚[% Env(„CGIHandle“) %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %]‘, 0, “, ‚AsPopup OTOBOPopup_TicketAction‘ ],
            [ ‚UserCustomerID‘,   Translatable(‚CustomerID‘),          ‚customer_id‘,    0, 1, ‚var‘, “, 0, undef, undef ],
            #            [ ‚UserCustomerIDs‘,  Translatable(‚CustomerIDs‘),         ‚customer_ids‘,   1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserPhone‘,        Translatable(‚Phone‘),               ‚phone‘,          1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserFax‘,          Translatable(‚Fax‘),                 ‚fax‘,            1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserMobile‘,       Translatable(‚Mobile‘),              ‚mobile‘,         1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserStreet‘,       Translatable(‚Street‘),              ’street‘,         1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserZip‘,          Translatable(‚Zip‘),                 ‚zip‘,            1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserCity‘,         Translatable(‚City‘),                ‚city‘,           1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserCountry‘,      Translatable(‚Country‘),             ‚country‘,        1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserComment‘,      Translatable(‚Comment‘),             ‚comments‘,       1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚ValidID‘,          Translatable(‚Valid‘),               ‚valid_id‘,       0, 1, ‚int‘, “, 0, undef, undef ],

            # Dynamic field example
            #            [ ‚DynamicField_Name_X‘, undef, ‚Name_X‘, 0, 0, ‚dynamic_field‘, undef, 0, undef, undef ],
            ],

            # default selections
            Selections => {

            #            UserTitle => {
            #                ‚Mr.‘ => Translatable(‚Mr.‘),
            #                ‚Mrs.‘ => Translatable(‚Mrs.‘),
            #            },
            },
            };

        Ansicht von 2 Antwort-Themen
        • Du musst angemeldet sein, um auf dieses Thema antworten zu können.