UserTools.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <script>
  2. import SvgIcon from '@jamescoyle/vue-icon';
  3. import { mdiAccount } from '@mdi/js';
  4. import { mdiLogout } from '@mdi/js';
  5. import { mdiCogOutline } from '@mdi/js';
  6. import { mapState } from 'pinia'
  7. import { UserStore } from '@/stores/user'
  8. export default {
  9. setup() {
  10. const userStore = UserStore()
  11. return { userStore }
  12. },
  13. data() {
  14. return {
  15. account_path: mdiAccount,
  16. cogoutline_path: mdiCogOutline,
  17. logout_path: mdiLogout
  18. }
  19. },
  20. computed: {
  21. ...mapState(UserStore,['isloggedin', 'isAdmin', 'mail', 'name', 'uid'])
  22. },
  23. methods: {
  24. // ...mapActions({
  25. // userLogout: 'User/userLogout'
  26. // }),
  27. onLogout () {
  28. console.log('UserTools onLogout')
  29. this.userStore.userLogout().then(() => {
  30. console.log('UserTools user logged-out then')
  31. })
  32. }
  33. },
  34. components: {
  35. SvgIcon
  36. }
  37. }
  38. </script>
  39. <template>
  40. <div id="user-tools">
  41. <a class="mdi mdi-account" :href="'/api/user/'+uid+'/edit'">
  42. <svg-icon type="mdi" :path="account_path"></svg-icon>
  43. <span>{{ name }}</span>
  44. <!-- <span v-else>{{ mail }}</span> -->
  45. </a><br/>
  46. <a
  47. v-if="isAdmin"
  48. class="api"
  49. href="/api/admin/content/concernements">
  50. <svg-icon type="mdi" :path="cogoutline_path"></svg-icon>
  51. <span>API</span>
  52. </a><br/>
  53. <a href="/user/logout"
  54. @click.prevent="onLogout()"
  55. class="mdi mdi-logout"
  56. title="logout"
  57. >
  58. <svg-icon type="mdi" :path="logout_path"></svg-icon>
  59. </a>
  60. </div>
  61. </template>
  62. <style lang="scss" scoped>
  63. #user-tools{
  64. display: flex;
  65. flex-direction: row;
  66. gap: 0em;
  67. a{
  68. padding: $pad_btn;
  69. svg{
  70. height:0.8em;
  71. }
  72. }
  73. }
  74. </style>