2
0

admin.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict'
  2. /* global usrData */
  3. import $ from 'jquery'
  4. import _ from 'lodash'
  5. import Vue from 'vue'
  6. module.exports = (alerts) => {
  7. if ($('#page-type-admin-users').length) {
  8. require('../modals/admin-users-create.js')(alerts)
  9. } else if ($('#page-type-admin-users-edit').length) {
  10. let vueEditUser = new Vue({
  11. el: '#page-type-admin-users-edit',
  12. data: {
  13. id: '',
  14. email: '',
  15. password: '********',
  16. name: '',
  17. rights: [],
  18. roleoverride: 'none'
  19. },
  20. methods: {
  21. addRightsRow: (ev) => {
  22. vueEditUser.rights.push({
  23. role: 'write',
  24. path: '/',
  25. exact: false,
  26. deny: false
  27. })
  28. },
  29. removeRightsRow: (idx) => {
  30. _.pullAt(vueEditUser.rights, idx)
  31. vueEditUser.$forceUpdate()
  32. },
  33. saveUser: (ev) => {
  34. let formattedRights = _.cloneDeep(vueEditUser.rights)
  35. switch (vueEditUser.roleoverride) {
  36. case 'admin':
  37. formattedRights.push({
  38. role: 'admin',
  39. path: '/',
  40. exact: false,
  41. deny: false
  42. })
  43. break
  44. }
  45. $.post(window.location.href, {
  46. password: vueEditUser.password,
  47. name: vueEditUser.name,
  48. rights: JSON.stringify(formattedRights)
  49. }).done((resp) => {
  50. alerts.pushSuccess('Saved successfully', 'Changes have been applied.')
  51. }).fail((jqXHR, txtStatus, resp) => {
  52. alerts.pushError('Error', resp)
  53. })
  54. }
  55. },
  56. created: function () {
  57. this.id = usrData._id
  58. this.email = usrData.email
  59. this.name = usrData.name
  60. if (_.find(usrData.rights, { role: 'admin' })) {
  61. this.rights = _.reject(usrData.rights, ['role', 'admin'])
  62. this.roleoverride = 'admin'
  63. } else {
  64. this.rights = usrData.rights
  65. }
  66. }
  67. })
  68. require('../modals/admin-users-delete.js')(alerts)
  69. }
  70. }