admin.js 1.91 KB
Newer Older
1
'use strict'
2

3
/* global usrData */
4

5 6 7
import $ from 'jquery'
import _ from 'lodash'
import Vue from 'vue'
8

9
module.exports = (alerts) => {
10
  if ($('#page-type-admin-users-edit').length) {
11 12 13 14 15 16 17 18 19
    let vueEditUser = new Vue({
      el: '#page-type-admin-users-edit',
      data: {
        id: '',
        email: '',
        password: '********',
        name: '',
        rights: [],
        roleoverride: 'none'
20
      },
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
      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)
          })
        }
56
      },
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
      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)
  }
72
}