|
@@ -18,6 +18,16 @@
|
|
|
|
|
|
|
|
<q-space />
|
|
<q-space />
|
|
|
|
|
|
|
|
|
|
+ <q-btn
|
|
|
|
|
+ flat
|
|
|
|
|
+ dense
|
|
|
|
|
+ no-caps
|
|
|
|
|
+ class="app-header__logout q-mr-sm"
|
|
|
|
|
+ icon="logout"
|
|
|
|
|
+ :label="$t('auth.logout')"
|
|
|
|
|
+ @click="logoutFn"
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
<q-avatar size="36px" class="app-header__avatar">
|
|
<q-avatar size="36px" class="app-header__avatar">
|
|
|
<img v-if="store.user?.photo_url" :src="store.user.photo_url" style="object-fit: cover; width: 100%; height: 100%;" />
|
|
<img v-if="store.user?.photo_url" :src="store.user.photo_url" style="object-fit: cover; width: 100%; height: 100%;" />
|
|
|
<span v-else class="app-header__avatar-initial">{{ userInitial }}</span>
|
|
<span v-else class="app-header__avatar-initial">{{ userInitial }}</span>
|
|
@@ -47,16 +57,25 @@
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { computed } from "vue";
|
|
import { computed } from "vue";
|
|
|
import { useI18n } from "vue-i18n";
|
|
import { useI18n } from "vue-i18n";
|
|
|
|
|
+import { useRouter } from "vue-router";
|
|
|
import { Cookies } from "quasar";
|
|
import { Cookies } from "quasar";
|
|
|
import { i18n } from "src/boot/i18n";
|
|
import { i18n } from "src/boot/i18n";
|
|
|
|
|
+import { useAuth } from "src/composables/useAuth";
|
|
|
import { userStore } from "src/stores/user";
|
|
import { userStore } from "src/stores/user";
|
|
|
import { navigationStore } from "src/stores/navigation";
|
|
import { navigationStore } from "src/stores/navigation";
|
|
|
import LogoSmall from "src/assets/logo_serprati_small.png";
|
|
import LogoSmall from "src/assets/logo_serprati_small.png";
|
|
|
|
|
|
|
|
const store = userStore();
|
|
const store = userStore();
|
|
|
const navStore = navigationStore();
|
|
const navStore = navigationStore();
|
|
|
|
|
+const router = useRouter();
|
|
|
|
|
+const { logout } = useAuth();
|
|
|
const { locale } = useI18n();
|
|
const { locale } = useI18n();
|
|
|
|
|
|
|
|
|
|
+const logoutFn = async () => {
|
|
|
|
|
+ await logout();
|
|
|
|
|
+ router.push({ name: "LoginPage" });
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const languages = [
|
|
const languages = [
|
|
|
{ code: "pt", label: "Português", flag: "🇧🇷" },
|
|
{ code: "pt", label: "Português", flag: "🇧🇷" },
|
|
|
{ code: "en", label: "English", flag: "🇺🇸" },
|
|
{ code: "en", label: "English", flag: "🇺🇸" },
|
|
@@ -121,6 +140,19 @@ const userInitial = computed(() => {
|
|
|
margin-left: 16px;
|
|
margin-left: 16px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+.app-header__logout {
|
|
|
|
|
+ color: white !important;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.q-icon) {
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: rgba(white, 0.1) !important;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.app-header__avatar {
|
|
.app-header__avatar {
|
|
|
background: rgba(white, 0.15);
|
|
background: rgba(white, 0.15);
|
|
|
// border: 2px solid rgba(white, 0.3);
|
|
// border: 2px solid rgba(white, 0.3);
|