release v2.0.0 #4
|
@ -0,0 +1,15 @@
|
|||
<template>
|
||||
<q-card class="col-12">
|
||||
<q-card-section class="text-h3">
|
||||
Test
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from '@vue/composition-api';
|
||||
export default defineComponent({
|
||||
name: 'Main',
|
||||
setup(_, ctx) {}
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,83 @@
|
|||
<template>
|
||||
<q-card class="col-12" height="">
|
||||
<q-card-section v-if="isThisSession(session.token)" class="text-caption">
|
||||
Diese Session.
|
||||
</q-card-section>
|
||||
<q-card-section>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Browser:
|
||||
<q-icon :name="getBrowserIcon(session.browser)" size="24px" />
|
||||
{{ session.browser }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Plattform:
|
||||
<q-icon :name="getPlatformIcon(session.platform)" size="24px" />
|
||||
{{ session.platform }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Lebenszeit:
|
||||
{{ session.lifetime }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">Läuft aus: {{ session.expires }}</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
dense
|
||||
icon="mdi-delete"
|
||||
@click="deleteSession(session.token)"
|
||||
/>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { computed, defineComponent } from '@vue/composition-api';
|
||||
export default defineComponent({
|
||||
name: 'Sessions',
|
||||
props: {
|
||||
session: {
|
||||
required: true
|
||||
}
|
||||
},
|
||||
setup(_, { root }) {
|
||||
function getBrowserIcon(browser: string) {
|
||||
return browser == 'firefox'
|
||||
? 'mdi-firefox'
|
||||
: browser == 'chrome'
|
||||
? 'mdi-google-chrome'
|
||||
: browser == 'safari'
|
||||
? 'mdi-apple-safari'
|
||||
: 'mdi-help';
|
||||
}
|
||||
function getPlatformIcon(platform: string) {
|
||||
return platform == 'linux'
|
||||
? 'mdi-linux'
|
||||
: platform == 'windows'
|
||||
? 'mdi-microsoft-windows'
|
||||
: platform == 'apple'
|
||||
? 'mdi-apple'
|
||||
: 'mdi-help';
|
||||
}
|
||||
|
||||
function deleteSession(token: string) {
|
||||
root.$store.dispatch('sessions/deleteSession', token);
|
||||
}
|
||||
function isThisSession(token: string) {
|
||||
return root.$store.getters['user/session'].token == token;
|
||||
}
|
||||
|
||||
return {
|
||||
getBrowserIcon,
|
||||
getPlatformIcon,
|
||||
isThisSession,
|
||||
deleteSession
|
||||
};
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -4,62 +4,22 @@
|
|||
padding
|
||||
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||
>
|
||||
<div class="text-h5 row">
|
||||
Deine Sessions:
|
||||
</div>
|
||||
<div class="fit row justify-center content-center items-center q-gutter-sm">
|
||||
<div
|
||||
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||
>
|
||||
<circular-progress v-if="sessionsLoading" />
|
||||
<q-card
|
||||
class="col-12"
|
||||
height=""
|
||||
<div class="col-12 text-left text-h6">
|
||||
Allgemeine Einstellungen:
|
||||
</div>
|
||||
<Main />
|
||||
<div class="col-12 text-left text-h6">
|
||||
Aktive Sessions:
|
||||
</div>
|
||||
<sessions
|
||||
v-for="(session, index) in sessions"
|
||||
:key="'session' + index"
|
||||
>
|
||||
<q-card-section
|
||||
v-if="isThisSession(session.token)"
|
||||
class="text-caption"
|
||||
>
|
||||
Diese Session.
|
||||
</q-card-section>
|
||||
<q-card-section>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Browser:
|
||||
<q-icon
|
||||
:name="getBrowserIcon(session.browser)"
|
||||
size="24px"
|
||||
:session="session"
|
||||
/>
|
||||
{{ session.browser }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Plattform:
|
||||
<q-icon
|
||||
:name="getPlatformIcon(session.platform)"
|
||||
size="24px"
|
||||
/>
|
||||
{{ session.platform }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Lebenszeit:
|
||||
{{ session.lifetime }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
Läuft aus: {{ session.expires }}
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="right">
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
dense
|
||||
icon="mdi-delete"
|
||||
@click="deleteSession(session.token)"
|
||||
/>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="row">
|
||||
<q-btn
|
||||
|
@ -74,44 +34,21 @@
|
|||
<script lang="ts">
|
||||
import { computed, defineComponent, onBeforeMount } from '@vue/composition-api';
|
||||
import CircularProgress from 'components/loading/CircularProgress.vue';
|
||||
import Sessions from '../components/settings/Sessions.vue';
|
||||
import Main from '../components/settings/Main.vue';
|
||||
export default defineComponent({
|
||||
// name: 'PageName'
|
||||
components: { CircularProgress },
|
||||
components: { CircularProgress, Sessions, Main },
|
||||
setup(_, { root }) {
|
||||
onBeforeMount(() => {
|
||||
root.$store.dispatch('sessions/getSessions');
|
||||
});
|
||||
|
||||
const sessions = computed(() => root.$store.getters['sessions/sessions']);
|
||||
|
||||
function showRootGetters() {
|
||||
//ctx.root.$store.dispatch('sessions/getSessions');
|
||||
console.log(sessions.value);
|
||||
}
|
||||
function getBrowserIcon(browser: string) {
|
||||
return browser == 'firefox'
|
||||
? 'mdi-firefox'
|
||||
: browser == 'chrome'
|
||||
? 'mdi-google-chrome'
|
||||
: browser == 'safari'
|
||||
? 'mdi-apple-safari'
|
||||
: 'mdi-help';
|
||||
}
|
||||
function getPlatformIcon(platform: string) {
|
||||
return platform == 'linux'
|
||||
? 'mdi-linux'
|
||||
: platform == 'windows'
|
||||
? 'mdi-microsoft-windows'
|
||||
: platform == 'apple'
|
||||
? 'mdi-apple'
|
||||
: 'mdi-help';
|
||||
}
|
||||
|
||||
function deleteSession(token: string) {
|
||||
root.$store.dispatch('sessions/deleteSession', token);
|
||||
}
|
||||
function isThisSession(token: string) {
|
||||
return root.$store.getters['user/session'].token == token;
|
||||
}
|
||||
|
||||
const sessionsLoading = computed(() => {
|
||||
return root.$store.getters['sessions/loading'];
|
||||
|
@ -119,12 +56,8 @@ export default defineComponent({
|
|||
|
||||
return {
|
||||
showRootGetters,
|
||||
sessions,
|
||||
getBrowserIcon,
|
||||
getPlatformIcon,
|
||||
isThisSession,
|
||||
deleteSession,
|
||||
sessionsLoading
|
||||
sessionsLoading,
|
||||
sessions
|
||||
};
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,7 +18,11 @@ export interface LoginResponse {
|
|||
const state: UserStateInterface = {
|
||||
permissions: [],
|
||||
session: {
|
||||
browser: '', expires: new Date(), lifetime: -1, platform: '', token: '',
|
||||
browser: '',
|
||||
expires: new Date(),
|
||||
lifetime: -1,
|
||||
platform: '',
|
||||
token: '',
|
||||
user: {
|
||||
display_name: '',
|
||||
firstname: '',
|
||||
|
@ -70,6 +74,18 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
|||
Loading.hide();
|
||||
});
|
||||
},
|
||||
logout({ commit }, token) {
|
||||
void axios.delete(`/auth/${token}`).then(() => {
|
||||
commit('setPermissions', []);
|
||||
commit('setToken', {
|
||||
browser: '',
|
||||
expires: '',
|
||||
lifetime: '',
|
||||
platform: '',
|
||||
token: ''
|
||||
});
|
||||
});
|
||||
},
|
||||
loadFromLocalStorage({ commit }) {
|
||||
console.log('load from store');
|
||||
let data = LocalStorage.getItem('permissions');
|
||||
|
@ -79,7 +95,13 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
|||
'setSession',
|
||||
data
|
||||
? data
|
||||
: { browser: '', expires: new Date(), lifetime: -1, platform: '', token: '' }
|
||||
: {
|
||||
browser: '',
|
||||
expires: new Date(),
|
||||
lifetime: -1,
|
||||
platform: '',
|
||||
token: ''
|
||||
}
|
||||
);
|
||||
commit('showState');
|
||||
}
|
||||
|
@ -95,7 +117,7 @@ const getters: GetterTree<UserStateInterface, StateInterface> = {
|
|||
loginLoading({ loginLoading }) {
|
||||
return loginLoading;
|
||||
},
|
||||
displayName({ user }) {
|
||||
displayName({ session: { user } }) {
|
||||
return `${user.firstname} ${user.lastname}`;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue