2024-06-10 15:10:22 +00:00
|
|
|
<script setup>
|
2024-06-11 18:15:29 +00:00
|
|
|
import CreateSecret from "./components/CreateSecret.vue";
|
2024-06-10 15:10:22 +00:00
|
|
|
import HelloWorld from "./components/HelloWorld.vue";
|
2024-06-13 05:11:56 +00:00
|
|
|
import ListSecrets from "./components/ListSecrets.vue";
|
2024-06-10 15:10:22 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<div>
|
2024-06-13 05:11:56 +00:00
|
|
|
<el-page-header :icon="null">
|
|
|
|
<template #icon> <span v-show="false">Wohoot</span></template>
|
|
|
|
<template #content>
|
|
|
|
<div class="flex items-center">
|
|
|
|
<span class="text-large font-600 mr-3"> FastAuth </span>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<template #extra>
|
|
|
|
<div class="flex items-center" v-if="loggedin">
|
|
|
|
<el-button type="primary" class="ml-2" @click="creationDialog = true">
|
|
|
|
Create
|
|
|
|
</el-button>
|
|
|
|
<el-button type="warning" class="ml-2" @click="logout">Logout</el-button>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</el-page-header>
|
|
|
|
|
|
|
|
<el-dialog v-model="creationDialog" title="Add a new TOTP secret" width="80vw">
|
2024-06-13 17:02:47 +00:00
|
|
|
<CreateSecret @close="creationDialog = false" />
|
2024-06-13 05:11:56 +00:00
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
<div class="container">
|
|
|
|
<HelloWorld msg="You did it!" @loggedin="loggedin = true" v-if="!loggedin" />
|
|
|
|
<el-button @click="showSecrets = true" v-if="loggedin"> Show secrets </el-button>
|
|
|
|
<el-button @click="showSecrets = false" v-if="showSecrets && loggedin">
|
|
|
|
Hide secrets
|
|
|
|
</el-button>
|
2024-06-13 17:02:47 +00:00
|
|
|
<ListSecrets :key="listUpdated" v-if="showSecrets && loggedin" />
|
2024-06-13 05:11:56 +00:00
|
|
|
</div>
|
2024-06-10 15:10:22 +00:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
2024-06-11 18:15:29 +00:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
loggedin: false,
|
2024-06-13 05:11:56 +00:00
|
|
|
showSecrets: false,
|
|
|
|
creationDialog: false,
|
2024-06-13 17:02:47 +00:00
|
|
|
listUpdated: 1,
|
2024-06-11 18:15:29 +00:00
|
|
|
};
|
|
|
|
},
|
2024-06-13 05:11:56 +00:00
|
|
|
methods: {
|
|
|
|
logout() {
|
|
|
|
localStorage.removeItem("token");
|
|
|
|
this.loggedin = false;
|
|
|
|
},
|
2024-06-13 17:02:47 +00:00
|
|
|
|
|
|
|
secretSaved() {
|
|
|
|
this.creationDialog = false;
|
|
|
|
console.log("before update", this.listUpdated);
|
|
|
|
this.listUpdated += 1;
|
|
|
|
console.log("after update", this.listUpdated);
|
|
|
|
},
|
2024-06-13 05:11:56 +00:00
|
|
|
},
|
2024-06-11 18:15:29 +00:00
|
|
|
};
|
|
|
|
</script>
|
2024-06-13 05:11:56 +00:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.header {
|
|
|
|
position: absolute;
|
|
|
|
width: 100vw;
|
|
|
|
height: 3rem;
|
|
|
|
padding: 0.3rem;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
background-color: aquamarine;
|
|
|
|
}
|
|
|
|
|
|
|
|
.container {
|
|
|
|
margin-top: 2rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.logoutBtn {
|
|
|
|
/* position: relative; */
|
|
|
|
margin-right: 0;
|
|
|
|
margin-left: auto;
|
|
|
|
}
|
|
|
|
.el-page-header__back {
|
|
|
|
display: none !important;
|
|
|
|
}
|
|
|
|
</style>
|