Credential.vue 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div class="bg-lightgray m-1 p-2 border rounded container-fluid">
  3. <credential-form-modal :descriptions="creddescList" :modal-id="'credential'+this.data.credid+'editModal'" :populateWith="this.data"></credential-form-modal>
  4. <modal :id="'credential'+this.data.credid+'deleteModal'" tabindex="-1">
  5. <h5 slot="header" class="modal-title" :id="'credential'+this.data.credid+'deleteModalLabel'">
  6. Delete Credential
  7. </h5>
  8. <div slot="body">
  9. Are you sure?
  10. </div>
  11. <div slot="footer">
  12. <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
  13. <button type="button" class="btn btn-danger" @click=deleteCredential()>
  14. <div v-if="!credentialDeleting">Confirm</div>
  15. <circle-spinner v-else :size="2"></circle-spinner>
  16. </button>
  17. </div>
  18. </modal>
  19. <div class="row no-gutters">
  20. <div class="h5 col-3 text-left">{{this.data.creddesc}}</div>
  21. <div class="col-9 text-right">{{this.data.creddate}}</div>
  22. </div>
  23. <div class="row">
  24. <div class="col-lg-9">
  25. <div>
  26. <label for="username"><i class="fas fa-fw fa-user"></i></label>
  27. <input type="text" v-bind:id="'username' + this.data.credid" class="border-0 credential" v-bind:value=this.data.creduser readonly/>
  28. <button v-bind:id="'btn-username' + this.data.credid" class="btn-clip btn btn-sm btn-primary rounded-pill" v-bind:data-clipboard-target="'#username' + this.data.credid">
  29. <i class="far fa-clone"></i>
  30. </button>
  31. </div>
  32. <div>
  33. <label for="password"><i class="fas fa-fw fa-key"></i></label>
  34. <input type="text" v-bind:id="'password' + this.data.credid" class="border-0 credential" v-bind:value=this.data.credpass readonly/>
  35. <button v-bind:id="'btn-password' + this.data.credid" class="btn-clip btn btn-sm btn-primary rounded-pill" v-bind:data-clipboard-target="'#password' + this.data.credid">
  36. <i class="far fa-clone"></i>
  37. </button>
  38. </div>
  39. </div>
  40. <div class="btn-group col-lg-2 align-self-end w-25 w-lg-auto" role="group" aria-label="Edit and Delete">
  41. <button type="button" class="btn btn-sm btn-secondary p-lg-1" data-toggle="modal" :data-target="'#credential'+this.data.credid+'editModal'"><i class="fas fa-fw fa-edit"></i></button>
  42. <button type="button" class="btn btn-sm btn-danger p-lg-1" data-toggle="modal" :data-target="'#credential'+this.data.credid+'deleteModal'"><i class="fas fa-fw fa-trash-alt"></i></button>
  43. </div>
  44. </div>
  45. </div>
  46. </template>
  47. <script>
  48. import CredentialFormModal from '../components/CredentialFormModal.vue'
  49. import Modal from '../components/Modal.vue'
  50. import CircleSpinner from '../components/CircleSpinner.vue'
  51. export default {
  52. components: {
  53. CredentialFormModal,
  54. Modal,
  55. CircleSpinner,
  56. },
  57. props: {
  58. credential: {
  59. type: Object,
  60. required: true,
  61. },
  62. descriptions: {
  63. type: Object,
  64. required: true,
  65. }
  66. },
  67. data() {
  68. return {
  69. data: this.credential,
  70. creddescList: this.descriptions,
  71. credentialDeleting: false,
  72. }
  73. },
  74. mounted() {
  75. Echo.channel('credential.'+this.data.credid)
  76. .listen('CredentialUpdated', (e) => {
  77. this.data = e.credential;
  78. });
  79. },
  80. methods: {
  81. deleteCredential() {
  82. this.credentialDeleting = true
  83. axios.delete('/api/credentials/' + this.data.credid, this.data)
  84. .then(response => {
  85. this.credentialDeleting = false
  86. $('#credential'+this.data.credid+'deleteModal').modal('hide');
  87. }).catch(error => {
  88. this.credentialDeleting = false
  89. console.error(error)
  90. })
  91. }
  92. }
  93. }
  94. </script>