refactor: admin-edit-user -> vue + fixes
This commit is contained in:
		@@ -22,6 +22,7 @@
 | 
			
		||||
    "discard": "Discard",
 | 
			
		||||
    "edit": "Edit",
 | 
			
		||||
    "history": "History",
 | 
			
		||||
    "home": "Home",
 | 
			
		||||
    "login": "Login",
 | 
			
		||||
    "logout": "Logout",
 | 
			
		||||
    "move": "Move",
 | 
			
		||||
@@ -46,4 +47,4 @@
 | 
			
		||||
    "source": "Loading source...",
 | 
			
		||||
    "editor": "Loading editor..."
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
extends ../../layout.pug
 | 
			
		||||
 | 
			
		||||
block rootNavCenter
 | 
			
		||||
  h2.nav-item= t('nav.account')
 | 
			
		||||
  h2.nav-item= t('nav.settings')
 | 
			
		||||
 | 
			
		||||
block rootNavRight
 | 
			
		||||
  loading-spinner
 | 
			
		||||
@@ -48,7 +48,7 @@ block content
 | 
			
		||||
                  a(href='/admin/settings')
 | 
			
		||||
                    i.icon-cog
 | 
			
		||||
                    span= t('nav.syssettings')
 | 
			
		||||
                li
 | 
			
		||||
                //-li
 | 
			
		||||
                  a(href='/admin/theme')
 | 
			
		||||
                    i.icon-drop
 | 
			
		||||
                    span= t('nav.theme')
 | 
			
		||||
 
 | 
			
		||||
@@ -8,116 +8,114 @@ block rootNavRight
 | 
			
		||||
      span= t('admin:users.returntousers')
 | 
			
		||||
 | 
			
		||||
block adminContent
 | 
			
		||||
  #page-type-admin-users-edit
 | 
			
		||||
    .hero
 | 
			
		||||
      h1.title#title= t('admin:users.edituser')
 | 
			
		||||
      h2.subtitle= usr.email
 | 
			
		||||
    table.table
 | 
			
		||||
      thead
 | 
			
		||||
        tr
 | 
			
		||||
          th= t('admin:users.uniqueid')
 | 
			
		||||
          th= t('admin:users.provider')
 | 
			
		||||
          th= t('admin:users.createdon')
 | 
			
		||||
          th= t('admin:users.updatedon')
 | 
			
		||||
      tbody
 | 
			
		||||
        tr
 | 
			
		||||
          td.is-centered= usr._id
 | 
			
		||||
          td.is-centered.has-icons
 | 
			
		||||
            case usr.provider
 | 
			
		||||
              when 'local': i.icon-server
 | 
			
		||||
              when 'windowslive': i.icon-windows2.is-blue
 | 
			
		||||
              when 'azure': i.icon-windows2.is-blue
 | 
			
		||||
              when 'google': i.icon-google.is-blue
 | 
			
		||||
              when 'facebook': i.icon-facebook.is-indigo
 | 
			
		||||
              when 'github': i.icon-github.is-grey
 | 
			
		||||
              when 'slack': i.icon-slack.is-purple
 | 
			
		||||
              when 'ldap': i.icon-arrow-repeat-outline
 | 
			
		||||
              default: i.icon-warning
 | 
			
		||||
            = t('auth:providers.' + usr.provider)
 | 
			
		||||
          td.is-centered= moment(usr.createdAt).format('lll')
 | 
			
		||||
          td.is-centered= moment(usr.updatedAt).format('lll')
 | 
			
		||||
    .form-sections
 | 
			
		||||
      section
 | 
			
		||||
        label.label= t('admin:profile.email')
 | 
			
		||||
        p.control.is-fullwidth
 | 
			
		||||
          input.input(type='text', placeholder='john.smith@example.com', v-model='email', disabled=!usrOpts.canChangeEmail)
 | 
			
		||||
      section
 | 
			
		||||
        label.label= t('admin:profile.displayname')
 | 
			
		||||
        p.control.is-fullwidth
 | 
			
		||||
          input.input(type='text', placeholder=t('admin:profile.displaynameexample'), v-model='name', disabled=!usrOpts.canChangeName)
 | 
			
		||||
      if usrOpts.canChangePassword
 | 
			
		||||
  admin-edit-user(inline-template, usrdata=JSON.stringify(usr))
 | 
			
		||||
    div
 | 
			
		||||
      .hero
 | 
			
		||||
        h1.title= t('admin:users.edituser')
 | 
			
		||||
        h2.subtitle= usr.email
 | 
			
		||||
      table.table
 | 
			
		||||
        thead
 | 
			
		||||
          tr
 | 
			
		||||
            th= t('admin:users.uniqueid')
 | 
			
		||||
            th= t('admin:users.provider')
 | 
			
		||||
            th= t('admin:users.createdon')
 | 
			
		||||
            th= t('admin:users.updatedon')
 | 
			
		||||
        tbody
 | 
			
		||||
          tr
 | 
			
		||||
            td.is-centered= usr._id
 | 
			
		||||
            td.is-centered.has-icons
 | 
			
		||||
              case usr.provider
 | 
			
		||||
                when 'local': i.icon-server
 | 
			
		||||
                when 'windowslive': i.icon-windows2.is-blue
 | 
			
		||||
                when 'azure': i.icon-windows2.is-blue
 | 
			
		||||
                when 'google': i.icon-google.is-blue
 | 
			
		||||
                when 'facebook': i.icon-facebook.is-indigo
 | 
			
		||||
                when 'github': i.icon-github.is-grey
 | 
			
		||||
                when 'slack': i.icon-slack.is-purple
 | 
			
		||||
                when 'ldap': i.icon-arrow-repeat-outline
 | 
			
		||||
                default: i.icon-warning
 | 
			
		||||
              = t('auth:providers.' + usr.provider)
 | 
			
		||||
            td.is-centered= moment(usr.createdAt).format('lll')
 | 
			
		||||
            td.is-centered= moment(usr.updatedAt).format('lll')
 | 
			
		||||
      .form-sections
 | 
			
		||||
        section
 | 
			
		||||
          label.label= t('admin:profile.password')
 | 
			
		||||
          label.label= t('admin:profile.email')
 | 
			
		||||
          p.control.is-fullwidth
 | 
			
		||||
            input.input(type='password', placeholder=t('admin:profile.password'), v-model='password', value='********')
 | 
			
		||||
      section
 | 
			
		||||
        label.label Access Rights
 | 
			
		||||
        table.table
 | 
			
		||||
          thead.is-teal
 | 
			
		||||
            tr
 | 
			
		||||
              th
 | 
			
		||||
              th(style={width: '200px'}) Permission(s)
 | 
			
		||||
              th Path
 | 
			
		||||
              th(style={width: '150px'}) Access
 | 
			
		||||
              th(style={width: '50px'})
 | 
			
		||||
          tbody
 | 
			
		||||
            tr(v-for='(right, idx) in rights', v-cloak)
 | 
			
		||||
              td.is-icon
 | 
			
		||||
                i.icon-marquee-plus.is-green(v-if='right.deny === false || right.deny === "false"')
 | 
			
		||||
                i.icon-marquee-minus.is-red(v-if='right.deny === true || right.deny === "true"')
 | 
			
		||||
              td
 | 
			
		||||
                p.control.is-fullwidth
 | 
			
		||||
                  select(v-model='right.role')
 | 
			
		||||
                    option(value='write') Read and Write
 | 
			
		||||
                    option(value='read') Read Only
 | 
			
		||||
              td
 | 
			
		||||
                .columns
 | 
			
		||||
                  .column.is-narrow
 | 
			
		||||
                    p.control
 | 
			
		||||
                      select(v-model='right.exact')
 | 
			
		||||
                        option(value='false') Path starts with:
 | 
			
		||||
                        option(value='true') Path match exactly:
 | 
			
		||||
                  .column
 | 
			
		||||
                    p.control.is-fullwidth
 | 
			
		||||
                      input.input(type='text', placeholder='/', v-model='right.path')
 | 
			
		||||
              td
 | 
			
		||||
                p.control.is-fullwidth
 | 
			
		||||
                  select(v-model='right.deny')
 | 
			
		||||
                    option(value='false') Allow
 | 
			
		||||
                    option(value='true') Deny
 | 
			
		||||
              td.is-centered.has-action-icons
 | 
			
		||||
                i.icon-delete.is-red(v-on:click='removeRightsRow(idx)')
 | 
			
		||||
            tr(v-if='rights.length < 1', v-cloak)
 | 
			
		||||
              td.is-icon
 | 
			
		||||
              td.is-centered(colspan='3'): em No additional access rights
 | 
			
		||||
              td.is-centered.has-action-icons
 | 
			
		||||
        .table-actions
 | 
			
		||||
          button.button.is-blue(v-on:click='addRightsRow')
 | 
			
		||||
            i.icon-plus
 | 
			
		||||
            span Add New Row
 | 
			
		||||
      section
 | 
			
		||||
        label.label Role Override
 | 
			
		||||
        p.control.is-fullwidth
 | 
			
		||||
          select(v-model='roleoverride', disabled=!usrOpts.canChangeRole)
 | 
			
		||||
            option(value='none') None
 | 
			
		||||
            option(value='admin') Global Administrator
 | 
			
		||||
      .columns.is-gapless
 | 
			
		||||
        .column
 | 
			
		||||
            input.input(type='text', placeholder='john.smith@example.com', v-model='email', disabled=!usrOpts.canChangeEmail)
 | 
			
		||||
        section
 | 
			
		||||
          label.label= t('admin:profile.displayname')
 | 
			
		||||
          p.control.is-fullwidth
 | 
			
		||||
            input.input(type='text', placeholder=t('admin:profile.displaynameexample'), v-model='name', disabled=!usrOpts.canChangeName)
 | 
			
		||||
        if usrOpts.canChangePassword
 | 
			
		||||
          section
 | 
			
		||||
            button.button.is-green(v-on:click='saveUser')
 | 
			
		||||
              i.icon-check
 | 
			
		||||
              span Save Changes
 | 
			
		||||
            a.button.button.is-grey.is-outlined(href='/admin/users')
 | 
			
		||||
              i.icon-cancel
 | 
			
		||||
              span Discard
 | 
			
		||||
        .column.is-narrow
 | 
			
		||||
          section
 | 
			
		||||
            if usrOpts.canBeDeleted
 | 
			
		||||
              button.button.is-red(v-on:click='$store.dispatch("modalDeleteUser/open")')
 | 
			
		||||
                i.icon-trash2
 | 
			
		||||
                span Delete Account
 | 
			
		||||
            label.label= t('admin:profile.password')
 | 
			
		||||
            p.control.is-fullwidth
 | 
			
		||||
              input.input(type='password', placeholder=t('admin:profile.password'), v-model='password', value='********')
 | 
			
		||||
        section
 | 
			
		||||
          label.label Access Rights
 | 
			
		||||
          table.table
 | 
			
		||||
            thead.is-teal
 | 
			
		||||
              tr
 | 
			
		||||
                th
 | 
			
		||||
                th(style={width: '200px'}) Permission(s)
 | 
			
		||||
                th Path
 | 
			
		||||
                th(style={width: '150px'}) Access
 | 
			
		||||
                th(style={width: '50px'})
 | 
			
		||||
            tbody
 | 
			
		||||
              tr(v-for='(right, idx) in rights', v-cloak)
 | 
			
		||||
                td.is-icon
 | 
			
		||||
                  i.icon-marquee-plus.is-green(v-if='right.deny === false || right.deny === "false"')
 | 
			
		||||
                  i.icon-marquee-minus.is-red(v-if='right.deny === true || right.deny === "true"')
 | 
			
		||||
                td
 | 
			
		||||
                  p.control.is-fullwidth
 | 
			
		||||
                    select(v-model='right.role')
 | 
			
		||||
                      option(value='write') Read and Write
 | 
			
		||||
                      option(value='read') Read Only
 | 
			
		||||
                td
 | 
			
		||||
                  .columns
 | 
			
		||||
                    .column.is-narrow
 | 
			
		||||
                      p.control
 | 
			
		||||
                        select(v-model='right.exact')
 | 
			
		||||
                          option(value='false') Path starts with:
 | 
			
		||||
                          option(value='true') Path match exactly:
 | 
			
		||||
                    .column
 | 
			
		||||
                      p.control.is-fullwidth
 | 
			
		||||
                        input.input(type='text', placeholder='/', v-model='right.path')
 | 
			
		||||
                td
 | 
			
		||||
                  p.control.is-fullwidth
 | 
			
		||||
                    select(v-model='right.deny')
 | 
			
		||||
                      option(value='false') Allow
 | 
			
		||||
                      option(value='true') Deny
 | 
			
		||||
                td.is-centered.has-action-icons
 | 
			
		||||
                  i.icon-delete.is-red(v-on:click='removeRightsRow(idx)')
 | 
			
		||||
              tr(v-if='rights.length < 1', v-cloak)
 | 
			
		||||
                td.is-icon
 | 
			
		||||
                td.is-centered(colspan='3'): em No additional access rights
 | 
			
		||||
                td.is-centered.has-action-icons
 | 
			
		||||
          .table-actions
 | 
			
		||||
            button.button.is-blue(v-on:click='addRightsRow')
 | 
			
		||||
              i.icon-plus
 | 
			
		||||
              span Add New Row
 | 
			
		||||
        section
 | 
			
		||||
          label.label Role Override
 | 
			
		||||
          p.control.is-fullwidth
 | 
			
		||||
            select(v-model='roleoverride', disabled=!usrOpts.canChangeRole)
 | 
			
		||||
              option(value='none') None
 | 
			
		||||
              option(value='admin') Global Administrator
 | 
			
		||||
        .columns.is-gapless
 | 
			
		||||
          .column
 | 
			
		||||
            section
 | 
			
		||||
              button.button.is-green(v-on:click='saveUser')
 | 
			
		||||
                i.icon-check
 | 
			
		||||
                span Save Changes
 | 
			
		||||
              a.button.button.is-grey.is-outlined(href='/admin/users')
 | 
			
		||||
                i.icon-cancel
 | 
			
		||||
                span Discard
 | 
			
		||||
          .column.is-narrow
 | 
			
		||||
            section
 | 
			
		||||
              if usrOpts.canBeDeleted
 | 
			
		||||
                button.button.is-red(v-on:click='$store.dispatch("modalDeleteUser/open")')
 | 
			
		||||
                  i.icon-trash2
 | 
			
		||||
                  span Delete Account
 | 
			
		||||
 | 
			
		||||
  modal-delete-user(current-user=usr._id)
 | 
			
		||||
 | 
			
		||||
  script(type='text/javascript').
 | 
			
		||||
    var usrData = !{JSON.stringify(usr)};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user