mirror of
https://github.com/bellingcat/auto-archiver-setup-tool.git
synced 2026-06-11 04:58:36 +03:00
172 lines
4.1 KiB
Vue
172 lines
4.1 KiB
Vue
<template>
|
|
<v-app-bar style="flex-grow: 0" class="text-no-wrap">
|
|
<v-toolbar-title title="Bellingcat Auto Archiver prototype">
|
|
<router-link to="/" class="nodecoration">
|
|
Bellingcat Auto Archiver prototype
|
|
</router-link>
|
|
</v-toolbar-title>
|
|
|
|
<v-chip
|
|
v-if="$store.state.errorMessage"
|
|
:title="$store.state.errorMessage"
|
|
color="red"
|
|
variant="tonal"
|
|
closable
|
|
class="mx-4"
|
|
>
|
|
ERROR: {{ $store.state.errorMessage }}
|
|
</v-chip>
|
|
|
|
<v-spacer v-if="!smAndDown"></v-spacer>
|
|
<div v-if="user?.active && !smAndDown">
|
|
<template v-for="btn in btns">
|
|
<v-btn
|
|
:to="btn.to"
|
|
:prepend-icon="btn.icon"
|
|
variant="text"
|
|
class="nodecoration ml-2"
|
|
size="large"
|
|
active-color="teal"
|
|
>
|
|
{{ btn.text }}
|
|
<v-tooltip activator="parent" location="bottom">{{
|
|
btn.tooltip
|
|
}}</v-tooltip>
|
|
</v-btn>
|
|
</template>
|
|
</div>
|
|
|
|
<v-spacer v-if="!smAndDown"></v-spacer>
|
|
<span
|
|
class="user mx-2 pa-2 bg-blue-grey-lighten-5 rounded elevation-2"
|
|
v-if="user"
|
|
>
|
|
<span v-if="!loadingUserState">
|
|
<v-chip
|
|
v-if="user.active"
|
|
color="green"
|
|
class="bg-white"
|
|
prepend-icon="mdi-checkbox-marked-circle"
|
|
variant="outlined"
|
|
>
|
|
active
|
|
</v-chip>
|
|
<v-chip
|
|
v-if="!user.active"
|
|
color="red"
|
|
class="bg-white"
|
|
prepend-icon="mdi-account-cancel"
|
|
variant="outlined"
|
|
>
|
|
inactive
|
|
</v-chip>
|
|
|
|
<v-tooltip activator="parent" location="bottom">{{
|
|
activeUserMessage
|
|
}}</v-tooltip>
|
|
</span>
|
|
<span class="ms-2">{{ user.email }}</span>
|
|
<v-btn
|
|
v-if="!smAndDown"
|
|
prepend-icon="mdi-logout"
|
|
variant="text"
|
|
class="mx-2 elevation-2 bg-white"
|
|
size="small"
|
|
@click="$store.dispatch('signout')"
|
|
>Sign Out</v-btn
|
|
>
|
|
</span>
|
|
|
|
<v-menu v-if="user?.active && smAndDown">
|
|
<template v-slot:activator="{ props }">
|
|
<v-app-bar-nav-icon v-bind="props"></v-app-bar-nav-icon>
|
|
</template>
|
|
<v-list>
|
|
<v-list-item v-for="btn in btns" :key="btn.to" :to="btn.to">
|
|
<v-btn
|
|
:prepend-icon="btn.icon"
|
|
variant="plain"
|
|
class="nodecoration"
|
|
size="large"
|
|
>
|
|
{{ btn.text }}
|
|
</v-btn>
|
|
<v-tooltip activator="parent" location="left">{{
|
|
btn.tooltip
|
|
}}</v-tooltip>
|
|
</v-list-item>
|
|
<v-list-item @click="$store.dispatch('signout')">
|
|
<v-btn
|
|
prepend-icon="mdi-logout"
|
|
variant="plain"
|
|
class="nodecoration"
|
|
size="large"
|
|
>Sign Out</v-btn
|
|
>
|
|
</v-list-item>
|
|
</v-list>
|
|
</v-menu>
|
|
</v-app-bar>
|
|
</template>
|
|
<script setup>
|
|
import { useDisplay } from "vuetify";
|
|
const { smAndDown } = useDisplay();
|
|
</script>
|
|
|
|
<script>
|
|
export default {
|
|
name: "NavBar",
|
|
data() {
|
|
return {
|
|
drawer: false,
|
|
btns: [
|
|
{
|
|
to: "/",
|
|
icon: "mdi-table-large",
|
|
text: "Sheets",
|
|
tooltip: "Create, manage, and archive Google Sheets.",
|
|
},
|
|
{
|
|
to: "/url",
|
|
icon: "mdi-cloud-download-outline",
|
|
text: "URL",
|
|
tooltip: "Archive a single URL.",
|
|
},
|
|
{
|
|
to: "/archives",
|
|
icon: "mdi-magnify",
|
|
text: "Archives",
|
|
tooltip: "Search for archived URLs.",
|
|
},
|
|
],
|
|
};
|
|
},
|
|
computed: {
|
|
user() {
|
|
return this.$store.state.user;
|
|
},
|
|
activeUserMessage() {
|
|
if (this.user && this.user.active) {
|
|
return "This account has access to at least one feature.";
|
|
}
|
|
return "This account is inactive, please reach out to the Bellingcat team for access.";
|
|
},
|
|
loadingUserState() {
|
|
return this.$store.state?.loadingUserState;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
.user {
|
|
margin-right: 1em;
|
|
font-size: 80%;
|
|
}
|
|
|
|
.nodecoration {
|
|
color: inherit !important;
|
|
text-decoration: none !important;
|
|
}
|
|
</style>
|