EditUser.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div>
  3. <modal title='Edit User'>
  4. <div slot='body'>
  5. <p class="control has-addons">
  6. <input class='input is-expanded' type='text' placeholder='Username' v-model='editing.username' autofocus>
  7. <a class="button is-info" @click='updateUsername()'>Update Username</a>
  8. </p>
  9. <p class="control has-addons">
  10. <input class='input is-expanded' type='text' placeholder='Username' v-model='editing.email.address' autofocus>
  11. <a class="button is-info" @click='updateEmail()'>Update Email Address</a>
  12. </p>
  13. <p class="control has-addons">
  14. <span class="select">
  15. <select v-model="editing.role">
  16. <option>default</option>
  17. <option>admin</option>
  18. </select>
  19. </span>
  20. <a class="button is-info" @click='updateRole()'>Update Role</a>
  21. </p>
  22. </div>
  23. <div slot='footer'>
  24. <!--button class='button is-warning'>
  25. <span>&nbsp;Send Verification Email</span>
  26. </button>
  27. <button class='button is-warning'>
  28. <span>&nbsp;Send Password Reset Email</span>
  29. </button-->
  30. <button class='button is-danger' @click='$parent.toggleModal()'>
  31. <span>&nbsp;Close</span>
  32. </button>
  33. </div>
  34. </modal>
  35. </div>
  36. </template>
  37. <script>
  38. import io from '../../io';
  39. import { Toast } from 'vue-roaster';
  40. import Modal from './Modal.vue';
  41. export default {
  42. components: { Modal },
  43. data() {
  44. return {
  45. editing: {},
  46. video: {
  47. player: null,
  48. paused: false,
  49. playerReady: false
  50. }
  51. }
  52. },
  53. methods: {
  54. updateUsername: function () {
  55. this.socket.emit(`users.updateUsername`, this.editing._id, this.editing.username, res => {
  56. Toast.methods.addToast(res.message, 4000);
  57. });
  58. },
  59. updateEmail: function () {
  60. this.socket.emit(`users.updateEmail`, this.editing._id, this.editing.email.address, res => {
  61. Toast.methods.addToast(res.message, 4000);
  62. });
  63. },
  64. updateRole: function () {
  65. let _this = this;
  66. this.socket.emit(`users.updateRole`, this.editing._id, this.editing.role, res => {
  67. Toast.methods.addToast(res.message, 4000);
  68. if (res.status === 'success' && _this.editing.role === 'default') location.reload();
  69. });
  70. }
  71. },
  72. ready: function () {
  73. let _this = this;
  74. io.getSocket(socket => _this.socket = socket );
  75. },
  76. events: {
  77. closeModal: function () {
  78. this.$parent.modals.editUser = false;
  79. },
  80. editUser: function (user) {
  81. this.editing = user;
  82. this.$parent.toggleModal();
  83. }
  84. }
  85. }
  86. </script>
  87. <style type='scss' scoped>
  88. .save-changes { color: #fff; }
  89. .tag:not(:last-child) { margin-right: 5px; }
  90. </style>