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
|
padding
|
||||||
class="fit row justify-center content-center items-center q-gutter-sm"
|
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||||
>
|
>
|
||||||
<div class="text-h5 row">
|
<div
|
||||||
Deine Sessions:
|
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||||
</div>
|
>
|
||||||
<div class="fit row justify-center content-center items-center q-gutter-sm">
|
|
||||||
<circular-progress v-if="sessionsLoading" />
|
<circular-progress v-if="sessionsLoading" />
|
||||||
<q-card
|
<div class="col-12 text-left text-h6">
|
||||||
class="col-12"
|
Allgemeine Einstellungen:
|
||||||
height=""
|
</div>
|
||||||
|
<Main />
|
||||||
|
<div class="col-12 text-left text-h6">
|
||||||
|
Aktive Sessions:
|
||||||
|
</div>
|
||||||
|
<sessions
|
||||||
v-for="(session, index) in sessions"
|
v-for="(session, index) in sessions"
|
||||||
:key="'session' + index"
|
:key="'session' + index"
|
||||||
>
|
:session="session"
|
||||||
<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>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<q-btn
|
<q-btn
|
||||||
|
@ -74,44 +34,21 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { computed, defineComponent, onBeforeMount } from '@vue/composition-api';
|
import { computed, defineComponent, onBeforeMount } from '@vue/composition-api';
|
||||||
import CircularProgress from 'components/loading/CircularProgress.vue';
|
import CircularProgress from 'components/loading/CircularProgress.vue';
|
||||||
|
import Sessions from '../components/settings/Sessions.vue';
|
||||||
|
import Main from '../components/settings/Main.vue';
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
// name: 'PageName'
|
// name: 'PageName'
|
||||||
components: { CircularProgress },
|
components: { CircularProgress, Sessions, Main },
|
||||||
setup(_, { root }) {
|
setup(_, { root }) {
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
root.$store.dispatch('sessions/getSessions');
|
root.$store.dispatch('sessions/getSessions');
|
||||||
});
|
});
|
||||||
|
|
||||||
const sessions = computed(() => root.$store.getters['sessions/sessions']);
|
const sessions = computed(() => root.$store.getters['sessions/sessions']);
|
||||||
|
|
||||||
function showRootGetters() {
|
function showRootGetters() {
|
||||||
//ctx.root.$store.dispatch('sessions/getSessions');
|
//ctx.root.$store.dispatch('sessions/getSessions');
|
||||||
console.log(sessions.value);
|
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(() => {
|
const sessionsLoading = computed(() => {
|
||||||
return root.$store.getters['sessions/loading'];
|
return root.$store.getters['sessions/loading'];
|
||||||
|
@ -119,12 +56,8 @@ export default defineComponent({
|
||||||
|
|
||||||
return {
|
return {
|
||||||
showRootGetters,
|
showRootGetters,
|
||||||
sessions,
|
sessionsLoading,
|
||||||
getBrowserIcon,
|
sessions
|
||||||
getPlatformIcon,
|
|
||||||
isThisSession,
|
|
||||||
deleteSession,
|
|
||||||
sessionsLoading
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -18,7 +18,11 @@ export interface LoginResponse {
|
||||||
const state: UserStateInterface = {
|
const state: UserStateInterface = {
|
||||||
permissions: [],
|
permissions: [],
|
||||||
session: {
|
session: {
|
||||||
browser: '', expires: new Date(), lifetime: -1, platform: '', token: '',
|
browser: '',
|
||||||
|
expires: new Date(),
|
||||||
|
lifetime: -1,
|
||||||
|
platform: '',
|
||||||
|
token: '',
|
||||||
user: {
|
user: {
|
||||||
display_name: '',
|
display_name: '',
|
||||||
firstname: '',
|
firstname: '',
|
||||||
|
@ -70,6 +74,18 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
||||||
Loading.hide();
|
Loading.hide();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
logout({ commit }, token) {
|
||||||
|
void axios.delete(`/auth/${token}`).then(() => {
|
||||||
|
commit('setPermissions', []);
|
||||||
|
commit('setToken', {
|
||||||
|
browser: '',
|
||||||
|
expires: '',
|
||||||
|
lifetime: '',
|
||||||
|
platform: '',
|
||||||
|
token: ''
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
loadFromLocalStorage({ commit }) {
|
loadFromLocalStorage({ commit }) {
|
||||||
console.log('load from store');
|
console.log('load from store');
|
||||||
let data = LocalStorage.getItem('permissions');
|
let data = LocalStorage.getItem('permissions');
|
||||||
|
@ -79,7 +95,13 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
||||||
'setSession',
|
'setSession',
|
||||||
data
|
data
|
||||||
? data
|
? data
|
||||||
: { browser: '', expires: new Date(), lifetime: -1, platform: '', token: '' }
|
: {
|
||||||
|
browser: '',
|
||||||
|
expires: new Date(),
|
||||||
|
lifetime: -1,
|
||||||
|
platform: '',
|
||||||
|
token: ''
|
||||||
|
}
|
||||||
);
|
);
|
||||||
commit('showState');
|
commit('showState');
|
||||||
}
|
}
|
||||||
|
@ -95,7 +117,7 @@ const getters: GetterTree<UserStateInterface, StateInterface> = {
|
||||||
loginLoading({ loginLoading }) {
|
loginLoading({ loginLoading }) {
|
||||||
return loginLoading;
|
return loginLoading;
|
||||||
},
|
},
|
||||||
displayName({ user }) {
|
displayName({ session: { user } }) {
|
||||||
return `${user.firstname} ${user.lastname}`;
|
return `${user.firstname} ${user.lastname}`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue