reduce shadow logouts, by actually logging out when token fails or is expired
This commit is contained in:
parent
66a03a9dca
commit
598f758332
5 changed files with 46 additions and 7 deletions
|
@ -20,6 +20,9 @@ export default (config) => (store) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
store.state[config.isLoadedKey] = true;
|
store.state[config.isLoadedKey] = true;
|
||||||
|
if ('validate' in config) {
|
||||||
|
config.validate(store.state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const reload = initialize;
|
const reload = initialize;
|
||||||
|
|
|
@ -515,6 +515,15 @@ const store = createStore({
|
||||||
prefix: "lf_",
|
prefix: "lf_",
|
||||||
debug: false,
|
debug: false,
|
||||||
isLoadedKey: "persistent_loaded",
|
isLoadedKey: "persistent_loaded",
|
||||||
|
validate: (state) => {
|
||||||
|
if (state.user && state.user.expiry && state.user.token) {
|
||||||
|
const as_date = new Date(state.user.expiry);
|
||||||
|
if (as_date < new Date()) {
|
||||||
|
state.user.token = null;
|
||||||
|
state.user.expiry = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
state: ["remember", "user", "events", "lastUsed",]
|
state: ["remember", "user", "events", "lastUsed",]
|
||||||
}), sharedStatePlugin({
|
}), sharedStatePlugin({
|
||||||
debug: false,
|
debug: false,
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import store from '@/store'
|
||||||
|
|
||||||
function ticketStateColorLookup(ticket) {
|
function ticketStateColorLookup(ticket) {
|
||||||
if (ticket.startsWith('closed_')) {
|
if (ticket.startsWith('closed_')) {
|
||||||
return 'secondary';
|
return 'secondary';
|
||||||
|
@ -36,6 +38,8 @@ const http = {
|
||||||
"Authorization": `Token ${token}`,
|
"Authorization": `Token ${token}`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
if (response.status === 401)
|
||||||
|
throw {http_status: response.status};
|
||||||
const success = response.status === 200 || response.status === 201;
|
const success = response.status === 200 || response.status === 201;
|
||||||
return {data: await response.json() || {}, success};
|
return {data: await response.json() || {}, success};
|
||||||
},
|
},
|
||||||
|
@ -51,6 +55,8 @@ const http = {
|
||||||
},
|
},
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
});
|
});
|
||||||
|
if (response.status === 401)
|
||||||
|
throw {http_status: response.status};
|
||||||
const success = response.status === 200 || response.status === 201;
|
const success = response.status === 200 || response.status === 201;
|
||||||
return {data: await response.json() || {}, success};
|
return {data: await response.json() || {}, success};
|
||||||
},
|
},
|
||||||
|
@ -66,6 +72,8 @@ const http = {
|
||||||
},
|
},
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
});
|
});
|
||||||
|
if (response.status === 401)
|
||||||
|
throw {http_status: response.status};
|
||||||
const success = response.status === 200 || response.status === 201;
|
const success = response.status === 200 || response.status === 201;
|
||||||
return {data: await response.json() || {}, success};
|
return {data: await response.json() || {}, success};
|
||||||
},
|
},
|
||||||
|
@ -81,6 +89,8 @@ const http = {
|
||||||
},
|
},
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
});
|
});
|
||||||
|
if (response.status === 401)
|
||||||
|
throw {http_status: response.status};
|
||||||
const success = response.status === 200 || response.status === 201;
|
const success = response.status === 200 || response.status === 201;
|
||||||
return {data: await response.json() || {}, success};
|
return {data: await response.json() || {}, success};
|
||||||
},
|
},
|
||||||
|
@ -95,17 +105,34 @@ const http = {
|
||||||
"Authorization": `Token ${token}`,
|
"Authorization": `Token ${token}`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
if (response.status === 401)
|
||||||
|
throw {http_status: response.status};
|
||||||
const success = response.status === 204;
|
const success = response.status === 204;
|
||||||
return {data: await response.text() || {}, success};
|
return {data: await response.text() || {}, success};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const http_session = token => ({
|
const http_session = token => ({
|
||||||
get: async (url) => await http.get(url, token),
|
get: async (url) => await http.get(url, token).catch((e) => {
|
||||||
post: async (url, data) => await http.post(url, data, token),
|
if (e.http_status === 401) store.commit('logout');
|
||||||
put: async (url, data) => await http.put(url, data, token),
|
return {data: {}, success: false};
|
||||||
patch: async (url, data) => await http.patch(url, data, token),
|
}),
|
||||||
delete: async (url) => await http.delete(url, token),
|
post: async (url, data) => await http.post(url, data, token).catch((e) => {
|
||||||
|
if (e.http_status === 401) store.commit('logout');
|
||||||
|
return {data: {}, success: false};
|
||||||
|
}),
|
||||||
|
put: async (url, data) => await http.put(url, data, token).catch((e) => {
|
||||||
|
if (e.http_status === 401) store.commit('logout');
|
||||||
|
return {data: {}, success: false};
|
||||||
|
}),
|
||||||
|
patch: async (url, data) => await http.patch(url, data, token).catch((e) => {
|
||||||
|
if (e.http_status === 401) store.commit('logout');
|
||||||
|
return {data: {}, success: false};
|
||||||
|
}),
|
||||||
|
delete: async (url) => await http.delete(url, token).catch((e) => {
|
||||||
|
if (e.http_status === 401) store.commit('logout');
|
||||||
|
return {data: {}, success: false};
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export {ticketStateColorLookup, ticketStateIconLookup, http, http_session};
|
export {ticketStateColorLookup, ticketStateIconLookup, http, http_session};
|
|
@ -72,7 +72,7 @@ export default {
|
||||||
name: 'Login',
|
name: 'Login',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
msg: 'Welcome to ' + window.location.hostname,
|
msg: 'Lost&Found Team Login',
|
||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
remember: false
|
remember: false
|
||||||
|
|
|
@ -87,7 +87,7 @@ export default {
|
||||||
name: 'Register',
|
name: 'Register',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
msg: 'Register',
|
msg: 'Register as team member',
|
||||||
password2: '',
|
password2: '',
|
||||||
form: {
|
form: {
|
||||||
username: '',
|
username: '',
|
||||||
|
|
Loading…
Add table
Reference in a new issue