refactor: admin-edit-user -> vue + fixes
This commit is contained in:
		
							
								
								
									
										74
									
								
								client/js/pages/admin-edit-user.component.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								client/js/pages/admin-edit-user.component.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| '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 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,72 +0,0 @@ | ||||
| 'use strict' | ||||
|  | ||||
| /* global usrData */ | ||||
|  | ||||
| import $ from 'jquery' | ||||
| import _ from 'lodash' | ||||
| import Vue from 'vue' | ||||
|  | ||||
| module.exports = (alerts) => { | ||||
|   if ($('#page-type-admin-users-edit').length) { | ||||
|     let vueEditUser = new Vue({ | ||||
|       el: '#page-type-admin-users-edit', | ||||
|       data: { | ||||
|         id: '', | ||||
|         email: '', | ||||
|         password: '********', | ||||
|         name: '', | ||||
|         rights: [], | ||||
|         roleoverride: 'none' | ||||
|       }, | ||||
|       methods: { | ||||
|         addRightsRow: (ev) => { | ||||
|           vueEditUser.rights.push({ | ||||
|             role: 'write', | ||||
|             path: '/', | ||||
|             exact: false, | ||||
|             deny: false | ||||
|           }) | ||||
|         }, | ||||
|         removeRightsRow: (idx) => { | ||||
|           _.pullAt(vueEditUser.rights, idx) | ||||
|           vueEditUser.$forceUpdate() | ||||
|         }, | ||||
|         saveUser: (ev) => { | ||||
|           let formattedRights = _.cloneDeep(vueEditUser.rights) | ||||
|           switch (vueEditUser.roleoverride) { | ||||
|             case 'admin': | ||||
|               formattedRights.push({ | ||||
|                 role: 'admin', | ||||
|                 path: '/', | ||||
|                 exact: false, | ||||
|                 deny: false | ||||
|               }) | ||||
|               break | ||||
|           } | ||||
|           $.post(window.location.href, { | ||||
|             password: vueEditUser.password, | ||||
|             name: vueEditUser.name, | ||||
|             rights: JSON.stringify(formattedRights) | ||||
|           }).done((resp) => { | ||||
|             alerts.pushSuccess('Saved successfully', 'Changes have been applied.') | ||||
|           }).fail((jqXHR, txtStatus, resp) => { | ||||
|             alerts.pushError('Error', resp) | ||||
|           }) | ||||
|         } | ||||
|       }, | ||||
|       created: function () { | ||||
|         this.id = usrData._id | ||||
|         this.email = usrData.email | ||||
|         this.name = usrData.name | ||||
|  | ||||
|         if (_.find(usrData.rights, { role: 'admin' })) { | ||||
|           this.rights = _.reject(usrData.rights, ['role', 'admin']) | ||||
|           this.roleoverride = 'admin' | ||||
|         } else { | ||||
|           this.rights = usrData.rights | ||||
|         } | ||||
|       } | ||||
|     }) | ||||
|     require('../modals/admin-users-delete.js')(alerts) | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user