Fixed login/logout glitches

This commit is contained in:
Fabio Manganiello 2025-03-25 18:02:56 +01:00
parent c80a953890
commit 6e692ecb62
Signed by: blacklight
GPG key ID: D90FBA7F76362774
2 changed files with 16 additions and 7 deletions
frontend/src

View file

@ -1,6 +1,7 @@
<template> <template>
<div class="app-container"> <Login v-if="!user && !loading" />
<Header :user="user" /> <div class="app-container" v-else>
<Header :user="user" @logout="doLogout" v-if="user" />
<div class="body"> <div class="body">
<div class="loading-container" v-if="loading"> <div class="loading-container" v-if="loading">
@ -24,6 +25,7 @@ import Api from './mixins/Api.vue';
import Dropdowns from './mixins/Dropdowns.vue'; import Dropdowns from './mixins/Dropdowns.vue';
import Header from './components/Header.vue'; import Header from './components/Header.vue';
import Loading from './elements/Loading.vue'; import Loading from './elements/Loading.vue';
import Login from './views/Login.vue';
import Messages from './components/Messages.vue' import Messages from './components/Messages.vue'
import User from './models/User'; import User from './models/User';
@ -35,6 +37,7 @@ export default {
components: { components: {
Header, Header,
Loading, Loading,
Login,
Messages, Messages,
RouterLink, RouterLink,
RouterView, RouterView,
@ -47,6 +50,13 @@ export default {
} }
}, },
methods: {
async doLogout() {
await this.logout()
this.user = null
},
},
async mounted() { async mounted() {
this.loading = true this.loading = true
this.installDropdownHandler() this.installDropdownHandler()

View file

@ -32,11 +32,9 @@
</RouterLink> </RouterLink>
</DropdownItem> </DropdownItem>
<DropdownItem> <DropdownItem @click="$emit('logout')">
<RouterLink to="/logout"> <font-awesome-icon icon="sign-out-alt" />&nbsp;&nbsp;
<font-awesome-icon icon="sign-out-alt" />&nbsp;&nbsp; <span class="item-text">Logout</span>
<span class="item-text">Logout</span>
</RouterLink>
</DropdownItem> </DropdownItem>
</Dropdown> </Dropdown>
</li> </li>
@ -54,6 +52,7 @@ import DropdownItem from '../elements/DropdownItem.vue';
import User from '../models/User'; import User from '../models/User';
export default { export default {
emits: ['logout'],
components: { components: {
Dropdown, Dropdown,
DropdownItem, DropdownItem,