LogoutManager
Logs out based on fetch responses. By default this is triggered by 401 (Unauthorized) status responses.
implements
LogoutManager implements Manager
Usage
main.ts
import { createApp } from 'vue';
import {
DataClientPlugin,
LogoutManager,
getDefaultManagers,
} from '@data-client/vue';
import App from './App.vue';
const managers = [new LogoutManager(), ...getDefaultManagers()];
const app = createApp(App);
app.use(DataClientPlugin, { managers });
app.mount('#app');
Custom logout handler
import { unAuth } from '../authentication';
const managers = [
new LogoutManager({
handleLogout(controller) {
// call custom unAuth function we defined
unAuth();
// still reset the store
controller.resetEntireStore();
},
}),
...getDefaultManagers(),
];
tip
Use controller.invalidateAll to only clear part of the cache.
import { unAuth } from '../authentication';
const myDomain = 'http://test.com';
const testKey = (key: string) => key.startsWith(`GET ${myDomain}`);
const managers = [
new LogoutManager({
handleLogout(controller) {
// call custom unAuth function we defined
unAuth();
// still reset the store
controller.invalidateAll({ testKey });
},
}),
...getDefaultManagers(),
];
Members
handleLogout(controller)
By default simply calls controller.resetEntireStore()
This should be sufficient if login state is determined by a user entity existence in the Reactive Data Client store. However, you can override this method via inheritance if more should be done.
shouldLogout(error)
protected shouldLogout(error: UnknownError) {
// 401 indicates reauthorization is needed
return error.status === 401;
}