mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
iam: Fixing ldap form (#444)
Fixes #112 Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
68989bd939
commit
0e933a2a84
@ -42,7 +42,7 @@ export default {
|
||||
label: 'label.configure.ldap',
|
||||
listView: true,
|
||||
args: [
|
||||
'hostname', 'port'
|
||||
'hostname', 'port', 'domainid'
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@ -48,8 +48,14 @@
|
||||
<a-form
|
||||
:form="form"
|
||||
@submit="handleSubmit"
|
||||
layout="vertical"
|
||||
>
|
||||
layout="vertical" >
|
||||
<a-form-item :label="$t('label.filterby')">
|
||||
<a-select @change="fetchListLdapUsers" v-model="selectedFilter" >
|
||||
<a-select-option v-for="opt in filters" :key="opt.id" >
|
||||
{{ opt.name }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.domain')">
|
||||
<a-select
|
||||
showSearch
|
||||
@ -57,7 +63,8 @@
|
||||
rules: [{ required: true, memessage: `${this.$t('message.error.select')}` }]
|
||||
}]"
|
||||
:placeholder="apiParams.domainid.description"
|
||||
:loading="domainLoading">
|
||||
:loading="domainLoading"
|
||||
@change="fetchListLdapUsers($event)" >
|
||||
<a-select-option v-for="opt in listDomains" :key="opt.name">
|
||||
{{ opt.name }}
|
||||
</a-select-option>
|
||||
@ -99,7 +106,7 @@
|
||||
:placeholder="apiParams.networkdomain.description"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('label.group')">
|
||||
<a-form-item :label="$t('label.ldap.group.name')">
|
||||
<a-input
|
||||
v-decorator="['group']"
|
||||
:placeholder="apiParams.group.description"
|
||||
@ -119,6 +126,7 @@
|
||||
<script>
|
||||
import { api } from '@/api'
|
||||
import { timeZone } from '@/utils/timezone'
|
||||
import store from '@/store'
|
||||
|
||||
export default {
|
||||
name: 'AddLdapAccount',
|
||||
@ -131,6 +139,8 @@ export default {
|
||||
listDomains: [],
|
||||
listRoles: [],
|
||||
timeZoneMap: [],
|
||||
filters: [],
|
||||
selectedFilter: '',
|
||||
listLoading: false,
|
||||
timeZoneLoading: false,
|
||||
domainLoading: false,
|
||||
@ -175,32 +185,53 @@ export default {
|
||||
title: this.$t('label.email'),
|
||||
dataIndex: 'email',
|
||||
scopedSlots: { customRender: 'email' }
|
||||
},
|
||||
{
|
||||
title: this.$t('Conflict'),
|
||||
dataIndex: 'conflictingusersource',
|
||||
scopedSlots: { customRender: 'conflictingusersource' }
|
||||
}
|
||||
]
|
||||
this.filters = [
|
||||
{
|
||||
id: 'NoFilter',
|
||||
name: 'No filter'
|
||||
},
|
||||
{
|
||||
id: 'LocalDomain',
|
||||
name: 'Local domain'
|
||||
},
|
||||
{
|
||||
id: 'AnyDomain',
|
||||
name: 'Any domain'
|
||||
},
|
||||
{
|
||||
id: 'PotentialImport',
|
||||
name: 'Potential import'
|
||||
}
|
||||
]
|
||||
this.selectedFilter = this.filters[0].id
|
||||
},
|
||||
mounted () {
|
||||
this.fetchData()
|
||||
},
|
||||
methods: {
|
||||
async fetchData () {
|
||||
this.listLoading = true
|
||||
this.timeZoneLoading = true
|
||||
this.domainLoading = true
|
||||
this.roleLoading = true
|
||||
this.fetchListLdapUsers()
|
||||
const [
|
||||
listTimeZone,
|
||||
listLdapUsers,
|
||||
listDomains,
|
||||
listRoles
|
||||
] = await Promise.all([
|
||||
this.fetchTimeZone(),
|
||||
this.fetchListLdapUsers(),
|
||||
this.fetchListDomains(),
|
||||
this.fetchListRoles()
|
||||
]).catch(error => {
|
||||
this.$notifyError(error)
|
||||
}).finally(() => {
|
||||
this.listLoading = false
|
||||
this.timeZoneLoading = false
|
||||
this.domainLoading = false
|
||||
this.roleLoading = false
|
||||
@ -208,8 +239,6 @@ export default {
|
||||
this.timeZoneMap = listTimeZone && listTimeZone.length > 0 ? listTimeZone : []
|
||||
this.listDomains = listDomains && listDomains.length > 0 ? listDomains : []
|
||||
this.listRoles = listRoles && listRoles.length > 0 ? listRoles : []
|
||||
this.dataSource = listLdapUsers
|
||||
this.oldDataSource = listLdapUsers
|
||||
},
|
||||
fetchTimeZone (value) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -220,10 +249,18 @@ export default {
|
||||
})
|
||||
})
|
||||
},
|
||||
fetchListLdapUsers () {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetchListLdapUsers (domain) {
|
||||
this.listLoading = true
|
||||
const params = {}
|
||||
params.listtype = 'new'
|
||||
params.userfilter = this.selectedFilter
|
||||
params.domainid = store.getters.userInfo.domainid
|
||||
if (domain) {
|
||||
const result = this.listDomains.filter(item => item.name === domain)
|
||||
if (result) {
|
||||
params.domainid = result[0].id
|
||||
}
|
||||
}
|
||||
api('listLdapUsers', params).then(json => {
|
||||
const listLdapUsers = json.ldapuserresponse.LdapUser
|
||||
if (listLdapUsers) {
|
||||
@ -232,10 +269,12 @@ export default {
|
||||
listLdapUsers[i].name = [listLdapUsers[i].firstname, listLdapUsers[i].lastname].join(' ')
|
||||
}
|
||||
}
|
||||
resolve(listLdapUsers)
|
||||
this.dataSource = listLdapUsers
|
||||
this.oldDataSource = listLdapUsers
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
this.$notifyError(error)
|
||||
}).finally(() => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
fetchListDomains () {
|
||||
@ -263,7 +302,7 @@ export default {
|
||||
handleSubmit (e) {
|
||||
e.preventDefault()
|
||||
this.form.validateFields((err, values) => {
|
||||
if (err || this.selectedRowKeys.length === 0) {
|
||||
if (err) {
|
||||
return
|
||||
}
|
||||
let apiName = 'ldapCreateAccount'
|
||||
@ -273,12 +312,20 @@ export default {
|
||||
const params = {}
|
||||
params.domainid = domain[0].id
|
||||
params.roleid = role[0].id
|
||||
params.account = values.account
|
||||
params.timezone = values.timezone
|
||||
params.networkdomain = values.networkdomain
|
||||
if (values.group && values.group.trim().length > 0) {
|
||||
params.group = values.group
|
||||
if (params.group && params.group.trim().length > 0) {
|
||||
apiName = 'importLdapUsers'
|
||||
}
|
||||
promises.push(new Promise((resolve, reject) => {
|
||||
api(apiName, params).then(json => {
|
||||
resolve(json)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
}))
|
||||
} else {
|
||||
this.selectedRowKeys.forEach(username => {
|
||||
params.username = username
|
||||
promises.push(new Promise((resolve, reject) => {
|
||||
@ -289,6 +336,7 @@ export default {
|
||||
})
|
||||
}))
|
||||
})
|
||||
}
|
||||
this.loading = true
|
||||
Promise.all(promises).then(response => {
|
||||
for (let i = 0; i < response.length; i++) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user