diff --git a/domain/auth/ldap/endpoint.go b/domain/auth/ldap/endpoint.go index eb138af6..e3dfaacb 100644 --- a/domain/auth/ldap/endpoint.go +++ b/domain/auth/ldap/endpoint.go @@ -58,6 +58,7 @@ func (h *Handler) Preview(w http.ResponseWriter, r *http.Request) { IsError bool `json:"isError"` Users []user.User `json:"users"` } + result.Users = []user.User{} // Read the request. defer streamutil.Close(r.Body) diff --git a/domain/auth/ldap/ldap.go b/domain/auth/ldap/ldap.go index 8beb0be6..f46e85b9 100644 --- a/domain/auth/ldap/ldap.go +++ b/domain/auth/ldap/ldap.go @@ -257,21 +257,27 @@ func convertUsers(c lm.LDAPConfig, lu []lm.LDAPUser) (du []user.User) { // FetchUsers from LDAP server using both User and Group filters. func fetchUsers(c lm.LDAPConfig) (du []user.User, err error) { du = []user.User{} + e1 := []lm.LDAPUser{} + e2 := []lm.LDAPUser{} + e3 := []lm.LDAPUser{} - e1, err := executeUserFilter(c) - if err != nil { - err = errors.Wrap(err, "unable to execute user filter") - return + if len(c.UserFilter) > 0 { + e1, err = executeUserFilter(c) + if err != nil { + err = errors.Wrap(err, "unable to execute user filter") + return + } } - e2, err := executeGroupFilter(c) - if err != nil { - err = errors.Wrap(err, "unable to execute group filter") - return + if len(c.GroupFilter) > 0 { + e2, err = executeGroupFilter(c) + if err != nil { + err = errors.Wrap(err, "unable to execute group filter") + return + } } // convert users from LDAP format to Documize format. - e3 := []lm.LDAPUser{} e3 = append(e3, e1...) e3 = append(e3, e2...) du = convertUsers(c, e3) diff --git a/domain/auth/ldap/local_test.go b/domain/auth/ldap/local_test.go index 2dcc5c6d..bbc5d1e8 100644 --- a/domain/auth/ldap/local_test.go +++ b/domain/auth/ldap/local_test.go @@ -28,8 +28,8 @@ var testConfigLocalLDAP = lm.LDAPConfig{ BaseDN: "ou=people,dc=planetexpress,dc=com", BindDN: "cn=admin,dc=planetexpress,dc=com", BindPassword: "GoodNewsEveryone", - UserFilter: "", - GroupFilter: "", + UserFilter: "(|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))", + GroupFilter: "(&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))", AttributeUserRDN: "uid", AttributeUserFirstname: "givenName", AttributeUserLastname: "sn", @@ -40,8 +40,6 @@ var testConfigLocalLDAP = lm.LDAPConfig{ } func TestUserFilter_LocalLDAP(t *testing.T) { - testConfigLocalLDAP.UserFilter = "(|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))" - e, err := executeUserFilter(testConfigLocalLDAP) if err != nil { t.Error("unable to exeucte user filter", err.Error()) @@ -61,14 +59,12 @@ func TestUserFilter_LocalLDAP(t *testing.T) { } func TestDualFilters_LocalLDAP(t *testing.T) { - testConfigLocalLDAP.UserFilter = "(|(objectClass=person)(objectClass=user)(objectClass=inetOrgPerson))" e1, err := executeUserFilter(testConfigLocalLDAP) if err != nil { t.Error("unable to exeucte user filter", err.Error()) return } - testConfigLocalLDAP.GroupFilter = "(&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))" e2, err := executeGroupFilter(testConfigLocalLDAP) if err != nil { t.Error("unable to exeucte group filter", err.Error()) @@ -87,8 +83,6 @@ func TestDualFilters_LocalLDAP(t *testing.T) { } func TestGroupFilter_LocalLDAP(t *testing.T) { - testConfigLocalLDAP.GroupFilter = "(&(objectClass=group)(|(cn=ship_crew)(cn=admin_staff)))" - e, err := executeGroupFilter(testConfigLocalLDAP) if err != nil { t.Error("unable to exeucte group filter", err.Error()) diff --git a/gui/app/components/customize/auth-settings.js b/gui/app/components/customize/auth-settings.js index 9349d27f..022a531f 100644 --- a/gui/app/components/customize/auth-settings.js +++ b/gui/app/components/customize/auth-settings.js @@ -15,11 +15,13 @@ import { set } from '@ember/object'; import { copy } from '@ember/object/internals'; import { inject as service } from '@ember/service'; import Notifier from '../../mixins/notifier'; +import ModalMixin from '../../mixins/modal'; import encoding from '../../utils/encoding'; import Component from '@ember/component'; -export default Component.extend(Notifier, { +export default Component.extend(ModalMixin, Notifier, { appMeta: service(), + globalSvc: service('global'), isDocumizeProvider: computed('authProvider', function() { return this.get('authProvider') === this.get('constants').AuthProvider.Documize; @@ -156,6 +158,19 @@ export default Component.extend(Notifier, { this.set('ldapConfig.encryptionType', e); }, + onLDAPPreview() { + this.showWait(); + + let config = this.get('ldapConfig'); + config.serverPort = parseInt(this.get('ldapConfig.serverPort')); + + this.get('globalSvc').previewLDAP(config).then((preview) => { + this.set('ldapPreview', preview); + this.modalOpen("#ldap-preview-modal", {"show": true}); + this.showDone(); + }); + }, + onSave() { let constants = this.get('constants'); let provider = this.get('authProvider'); diff --git a/gui/app/templates/components/customize/auth-settings.hbs b/gui/app/templates/components/customize/auth-settings.hbs index 2a4e39b4..958e1be9 100644 --- a/gui/app/templates/components/customize/auth-settings.hbs +++ b/gui/app/templates/components/customize/auth-settings.hbs @@ -131,7 +131,7 @@
Keycloak connection failed: {{keycloakFailure}}
{{/if}} + + +