release v2.0.0 #4
|
@ -15,11 +15,12 @@ export default boot(({ Vue, store }) => {
|
||||||
axios.defaults.baseURL = config.baseURL;
|
axios.defaults.baseURL = config.baseURL;
|
||||||
|
|
||||||
axios.interceptors.request.use(config => {
|
axios.interceptors.request.use(config => {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
||||||
const token: Token = (<UserStateInterface>store.state.user).token;
|
const token: Token = store.getters['user/token'];
|
||||||
if (token) {
|
if (token) {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||||
config.headers['Authorization'] = 'Token ' + token.token;
|
config.headers['Token'] = token.token;
|
||||||
|
//config.headers['Authorization'] = 'Token ' + token.token;
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,11 +4,15 @@ import { RouteRecord } from 'vue-router';
|
||||||
|
|
||||||
export default boot(({ router, store }) => {
|
export default boot(({ router, store }) => {
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
||||||
|
store.dispatch('user/loadFromLocalStorage');
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||||
const user: UserStateInterface = (<UserStateInterface>store.state).user;
|
//const user: UserStateInterface = (<UserStateInterface>store.state).user;
|
||||||
console.log('login_boot', user);
|
//const user: UserStateInterface = store.getters['user/user'];
|
||||||
|
const permissions: [] = store.getters['user/permissions'];
|
||||||
|
console.log('login_boot', permissions);
|
||||||
if (
|
if (
|
||||||
to.matched.some((record: RouteRecord) => {
|
to.matched.some((record: RouteRecord) => {
|
||||||
// permissions is set AND has NO matching permission
|
// permissions is set AND has NO matching permission
|
||||||
|
@ -19,7 +23,7 @@ export default boot(({ router, store }) => {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
||||||
(
|
(
|
||||||
record.meta.permissions.filter((value: string) =>
|
record.meta.permissions.filter((value: string) =>
|
||||||
user.permissions.includes(value)
|
permissions.includes(value)
|
||||||
).length > 0
|
).length > 0
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<q-page padding class="fit row justify-center content-center items-center">
|
<q-page
|
||||||
|
padding
|
||||||
|
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||||
|
>
|
||||||
<div class="text-h5 row">
|
<div class="text-h5 row">
|
||||||
Deine Sessions:
|
Deine Sessions:
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,7 +11,6 @@
|
||||||
class="fit row justify-center content-center items-center q-gutter-sm"
|
class="fit row justify-center content-center items-center q-gutter-sm"
|
||||||
>
|
>
|
||||||
<circular-progress v-if="sessionsLoading" />
|
<circular-progress v-if="sessionsLoading" />
|
||||||
<div>tada:: {{ sessionsLoading }}</div>
|
|
||||||
<q-card
|
<q-card
|
||||||
class="col-12"
|
class="col-12"
|
||||||
height=""
|
height=""
|
||||||
|
|
|
@ -36,9 +36,7 @@ const actions: ActionTree<SessionInterface, StateInterface> = {
|
||||||
console.log(rootGetters);
|
console.log(rootGetters);
|
||||||
commit('setLoading', true);
|
commit('setLoading', true);
|
||||||
axios
|
axios
|
||||||
.get('http://localhost:5000/auth', {
|
.get('/auth')
|
||||||
headers: { Token: rootGetters['user/token'].token }
|
|
||||||
})
|
|
||||||
.then(response => {
|
.then(response => {
|
||||||
console.log(response.data);
|
console.log(response.data);
|
||||||
commit('setSessions', response.data);
|
commit('setSessions', response.data);
|
||||||
|
@ -52,10 +50,9 @@ const actions: ActionTree<SessionInterface, StateInterface> = {
|
||||||
},
|
},
|
||||||
deleteSession({ commit, dispatch, rootGetters }, token) {
|
deleteSession({ commit, dispatch, rootGetters }, token) {
|
||||||
commit('setLoading', true);
|
commit('setLoading', true);
|
||||||
|
console.log('axios', axios);
|
||||||
axios
|
axios
|
||||||
.delete(`http://localhost:5000/auth/${token}`, {
|
.delete(`/auth/${token}`)
|
||||||
headers: { Token: rootGetters['user/token'].token }
|
|
||||||
})
|
|
||||||
.then(() => {
|
.then(() => {
|
||||||
void dispatch('getSessions');
|
void dispatch('getSessions');
|
||||||
})
|
})
|
||||||
|
|
|
@ -20,6 +20,7 @@ export interface User {
|
||||||
lastname: string;
|
lastname: string;
|
||||||
mail: string;
|
mail: string;
|
||||||
roles: string[];
|
roles: string[];
|
||||||
|
userid: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface UserStateInterface extends LoginResponse {
|
export interface UserStateInterface extends LoginResponse {
|
||||||
|
@ -41,9 +42,9 @@ const state: UserStateInterface = {
|
||||||
firstname: '',
|
firstname: '',
|
||||||
lastname: '',
|
lastname: '',
|
||||||
mail: '',
|
mail: '',
|
||||||
roles: []
|
roles: [],
|
||||||
|
userid: ''
|
||||||
},
|
},
|
||||||
userid: '',
|
|
||||||
loginLoading: false
|
loginLoading: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -57,9 +58,6 @@ const mutations: MutationTree<UserStateInterface> = {
|
||||||
setUser(state, data: User) {
|
setUser(state, data: User) {
|
||||||
state.user = data;
|
state.user = data;
|
||||||
},
|
},
|
||||||
setUserId(state, data: string) {
|
|
||||||
state.userid = data;
|
|
||||||
},
|
|
||||||
setLoginLoading(state, data: boolean) {
|
setLoginLoading(state, data: boolean) {
|
||||||
state.loginLoading = data;
|
state.loginLoading = data;
|
||||||
},
|
},
|
||||||
|
@ -74,18 +72,16 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
||||||
commit('setLoginLoading', true);
|
commit('setLoginLoading', true);
|
||||||
Loading.show({ message: 'Du wirst eingeloggt' });
|
Loading.show({ message: 'Du wirst eingeloggt' });
|
||||||
void axios
|
void axios
|
||||||
.post('http://localhost:5000/auth', data)
|
.post('/auth', data)
|
||||||
.then((response: AxiosResponse<LoginResponse>) => {
|
.then((response: AxiosResponse<LoginResponse>) => {
|
||||||
commit('setPermissions', response.data.permissions);
|
commit('setPermissions', response.data.permissions);
|
||||||
console.log('saved permisisons');
|
console.log('saved permisisons');
|
||||||
commit('setToken', response.data.token);
|
commit('setToken', response.data.token);
|
||||||
commit('setUser', response.data.user);
|
commit('setUser', response.data.user);
|
||||||
commit('setUserId', response.data.userid);
|
|
||||||
commit('showState');
|
commit('showState');
|
||||||
LocalStorage.set('permissions', response.data.permissions);
|
LocalStorage.set('permissions', response.data.permissions);
|
||||||
LocalStorage.set('token', response.data.token);
|
LocalStorage.set('token', response.data.token);
|
||||||
LocalStorage.set('user', response.data.user);
|
LocalStorage.set('user', response.data.user);
|
||||||
LocalStorage.set('userid', response.data.userid);
|
|
||||||
|
|
||||||
void Router.push({ name: 'user' });
|
void Router.push({ name: 'user' });
|
||||||
})
|
})
|
||||||
|
@ -96,6 +92,33 @@ const actions: ActionTree<UserStateInterface, StateInterface> = {
|
||||||
commit('setLoginLoading', false);
|
commit('setLoginLoading', false);
|
||||||
Loading.hide();
|
Loading.hide();
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
loadFromLocalStorage({ commit }) {
|
||||||
|
console.log('load from store');
|
||||||
|
let data = LocalStorage.getItem('permissions');
|
||||||
|
commit('setPermissions', data ? data : []);
|
||||||
|
data = LocalStorage.getItem('token');
|
||||||
|
commit(
|
||||||
|
'setToken',
|
||||||
|
data
|
||||||
|
? data
|
||||||
|
: { browser: '', expires: '', lifetime: -1, platform: '', token: '' }
|
||||||
|
);
|
||||||
|
data = LocalStorage.getItem('user');
|
||||||
|
commit(
|
||||||
|
'setUser',
|
||||||
|
data
|
||||||
|
? data
|
||||||
|
: {
|
||||||
|
display_name: '',
|
||||||
|
firstname: '',
|
||||||
|
lastname: '',
|
||||||
|
mail: '',
|
||||||
|
roles: [],
|
||||||
|
userid: ''
|
||||||
|
}
|
||||||
|
);
|
||||||
|
commit('showState');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,9 +132,6 @@ const getters: GetterTree<UserStateInterface, StateInterface> = {
|
||||||
user({ user }) {
|
user({ user }) {
|
||||||
return user;
|
return user;
|
||||||
},
|
},
|
||||||
userid({ userid }) {
|
|
||||||
return userid;
|
|
||||||
},
|
|
||||||
loginLoading({ loginLoading }) {
|
loginLoading({ loginLoading }) {
|
||||||
return loginLoading;
|
return loginLoading;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue