UserTab.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <div class="tab-content">
  3. <div class="layout-col">
  4. <DefinitionList title="User Data" class="tab-content-section border-none">
  5. <DefinitionListRow v-if="user.email" label="Email">{{
  6. user.email
  7. }}</DefinitionListRow>
  8. <DefinitionListRow label="User data"
  9. ><code class="code-inline"
  10. ><pre>{{ stringifiedUserData }}</pre></code
  11. ></DefinitionListRow
  12. >
  13. </DefinitionList>
  14. <DefinitionList title="Client info" class="tab-content-section">
  15. <DefinitionListRow label="IP address">{{ request.ip }}</DefinitionListRow>
  16. <DefinitionListRow label="User agent">{{ request.useragent }}</DefinitionListRow>
  17. </DefinitionList>
  18. </div>
  19. </div>
  20. </template>
  21. <script>
  22. import md5 from 'md5';
  23. import DefinitionList from '../Shared/DefinitionList';
  24. import DefinitionListRow from '../Shared/DefinitionListRow.js';
  25. export default {
  26. components: { DefinitionListRow, DefinitionList },
  27. inject: ['report'],
  28. computed: {
  29. user() {
  30. return this.report.context.user;
  31. },
  32. request() {
  33. return this.report.context.request;
  34. },
  35. gravatar() {
  36. if (!this.user.email) {
  37. return null;
  38. }
  39. const size = 80;
  40. return 'https://www.gravatar.com/avatar/' + md5(this.user.email) + '.jpg?s=' + size;
  41. },
  42. stringifiedUserData() {
  43. return JSON.stringify(this.user, null, 4);
  44. },
  45. },
  46. };
  47. </script>