75 lines
1.6 KiB
JavaScript
75 lines
1.6 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
export default {
|
||
|
name: 'admin-edit-user',
|
||
|
props: ['usrdata'],
|
||
|
data() {
|
||
|
return {
|
||
|
id: '',
|
||
|
email: '',
|
||
|
password: '********',
|
||
|
name: '',
|
||
|
rights: [],
|
||
|
roleoverride: 'none'
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
addRightsRow() {
|
||
|
this.rights.push({
|
||
|
role: 'write',
|
||
|
path: '/',
|
||
|
exact: false,
|
||
|
deny: false
|
||
|
})
|
||
|
},
|
||
|
removeRightsRow(idx) {
|
||
|
this._.pullAt(this.rights, idx)
|
||
|
this.$forceUpdate()
|
||
|
},
|
||
|
saveUser() {
|
||
|
let self = this
|
||
|
let formattedRights = this._.cloneDeep(this.rights)
|
||
|
switch (this.roleoverride) {
|
||
|
case 'admin':
|
||
|
formattedRights.push({
|
||
|
role: 'admin',
|
||
|
path: '/',
|
||
|
exact: false,
|
||
|
deny: false
|
||
|
})
|
||
|
break
|
||
|
}
|
||
|
this.$http.post(window.location.href, {
|
||
|
password: this.password,
|
||
|
name: this.name,
|
||
|
rights: JSON.stringify(formattedRights)
|
||
|
}).then(resp => {
|
||
|
self.$store.dispatch('alert', {
|
||
|
style: 'green',
|
||
|
icon: 'check',
|
||
|
msg: 'Changes have been applied successfully.'
|
||
|
})
|
||
|
}).catch(err => {
|
||
|
self.$store.dispatch('alert', {
|
||
|
style: 'red',
|
||
|
icon: 'square-cross',
|
||
|
msg: 'Error: ' + err.body.msg
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
mounted() {
|
||
|
let usr = JSON.parse(this.usrdata)
|
||
|
this.id = usr._id
|
||
|
this.email = usr.email
|
||
|
this.name = usr.name
|
||
|
|
||
|
if (this._.find(usr.rights, { role: 'admin' })) {
|
||
|
this.rights = this._.reject(usr.rights, ['role', 'admin'])
|
||
|
this.roleoverride = 'admin'
|
||
|
} else {
|
||
|
this.rights = usr.rights
|
||
|
}
|
||
|
}
|
||
|
}
|