77 {{ t('user_name', 'Listing and searching for users is constrained by these criteria:') }}
88
99 <div class =" ldap-wizard__users__line ldap-wizard__users__user-filter-object-class" >
10- <NcSelect v- model= " ldapConfig . ldapUserFilterObjectclass "
10+ <NcSelect : model-value = " ldapUserFilterObjectclass "
1111 :disabled =" ldapConfig .ldapUserFilterMode === ' 1' "
1212 class="ldap-wizard__users__user-filter-object-class__select"
13- :options =" [ ' TODO ' ] "
13+ :options =" userObjectClasses "
1414 :input-label =" t (' user_name' , ' Only these object classes:' )"
15- :multiple =" true " />
15+ :multiple =" true "
16+ @update :model-value =" updateUserFilterObjectclass " />
1617 {{ t('user_name', 'The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.') }}
1718 </div >
1819
2829 :placeholder="t('user_name', 'Search groups')"
2930 autocomplete="off" /> -->
3031
31- <NcSelect v- model= " ldapConfig . ldapUserFilterGroups "
32+ <NcSelect : model-value = " ldapUserFilterGroups "
3233 class="ldap-wizard__users__user-filter-groups__select"
3334 :disabled =" ldapConfig .ldapUserFilterMode === ' 1' "
34- :options =" [' TODO' ] "
35- :disable =" allowUserFilterGroupsSelection "
36- :input-label =" t (' user_name' , ' Only these object classes:' )"
37- :multiple =" true " />
38- </div >
39-
40- <!-- TODO -->
41- <div class =" ldap-wizard__users__line" >
42- <p class =" ldapManyGroupsSupport hidden" >
43- <select class =" ldapGroupList ldapGroupListAvailable"
44- :disabled =" ldapConfig.ldapUserFilterMode === '1'"
45- :multiple =" true"
46- aria-describedby =" ldapGroupListAvailable_instructions"
47- :title =" t('user_name', 'Available groups')" />
48- </p >
49- <p id =" ldapGroupListAvailable_instructions" class =" hidden-visually" >
50- {{ t('user_name', 'Available groups') }}
51- </p >
52-
53- <span >
54- <NcButton class="ldapGroupListSelect">> ; </NcButton >
55- <NcButton class="ldapGroupListDeselect">< ; </NcButton >
56- </span >
57-
58- <select class =" ldapGroupList ldapGroupListSelected"
59- :disabled =" ldapConfig.ldapUserFilterMode === '1'"
35+ :options =" userGroups "
36+ :input-label =" t (' user_name' , ' Only these groups:' )"
6037 :multiple =" true "
61- aria-describedby =" ldapGroupListSelected_instructions"
62- :title =" t('user_name', 'Selected groups')" />
63-
64- <p id =" ldapGroupListSelected_instructions" class =" hidden-visually" >
65- {{ t('user_name', 'Selected groups') }}
66- </p >
38+ @update :model-value =" updateUserFilterGroups " />
6739 </div >
6840
6941 <div class =" ldap-wizard__users__line ldap-wizard__users__user-filter" >
9466</template >
9567
9668<script lang="ts" setup>
97- import { ref } from ' vue'
69+ import { ref , computed , watch } from ' vue'
9870import { storeToRefs } from ' pinia'
9971
10072import { t } from ' @nextcloud/l10n'
@@ -107,13 +79,43 @@ import { showEnableAutomaticFilterInfo } from '../../services/ldapConfigService'
10779
10880const wizardStore = useWizardStore ()
10981const ldapConfigsStore = useLDAPConfigsStore ()
110- const { selectedConfig : ldapConfig } = storeToRefs (ldapConfigsStore )
82+ const { selectedConfig : ldapConfig, updatingConfig } = storeToRefs (ldapConfigsStore )
11183
11284const usersCount = ref <number | undefined >(undefined )
11385
114- const allowUserFilterGroupsSelection = ref (true ) // TODO
11586const instanceName = (getCapabilities () as { theming: { name: string } }).theming .name
11687
88+ const userObjectClasses = ref ([] as string [])
89+ const userGroups = ref ([] as string [])
90+
91+ const shouldRequestLdapUserFilter = ref (false )
92+
93+ const ldapUserFilterObjectclass = computed (() => ldapConfig .value .ldapUserFilterObjectclass .split (' ;' ).filter ((item ) => item !== ' ' ))
94+ function updateUserFilterObjectclass(value : string []) {
95+ ldapConfig .value .ldapUserFilterObjectclass = value .join (' ;' )
96+ shouldRequestLdapUserFilter .value = true
97+ }
98+
99+ const ldapUserFilterGroups = computed (() => ldapConfig .value .ldapUserFilterGroups .split (' ;' ).filter ((item ) => item !== ' ' ))
100+ function updateUserFilterGroups(value : string []) {
101+ ldapConfig .value .ldapUserFilterGroups = value .join (' ;' )
102+ shouldRequestLdapUserFilter .value = true
103+ }
104+
105+ watch (updatingConfig , async () => {
106+ if (shouldRequestLdapUserFilter .value === true && updatingConfig .value === 0 && ldapConfig .value .ldapUserFilterMode === ' 0' ) {
107+ const response = await wizardStore .callWizardAction (' getUserListFilter' )
108+ ldapConfig .value .ldapUserFilter = response .changes .ldap_userlist_filter
109+ shouldRequestLdapUserFilter .value = false
110+ }
111+ })
112+
113+ wizardStore .callWizardAction (' determineUserObjectClasses' )
114+ .then ((response ) => { userObjectClasses .value = response .options .ldap_userfilter_objectclass })
115+
116+ wizardStore .callWizardAction (' determineGroupsForUsers' )
117+ .then ((response ) => { userGroups .value = response .options .ldap_userfilter_groups })
118+
117119/**
118120 *
119121 */
0 commit comments