feat(auth): add abort controller for refresh interruption
Signed-off-by: Noa Virellia <noa@requiem.garden>
This commit is contained in:
@@ -35,16 +35,20 @@ export function clearTokens() {
|
|||||||
removeRefreshToken();
|
removeRefreshToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const refreshTokenAbortController = new AbortController();
|
||||||
|
|
||||||
export async function doRefreshToken(refreshToken: string): Promise<ServiceAuthTokenResponse | undefined> {
|
export async function doRefreshToken(refreshToken: string): Promise<ServiceAuthTokenResponse | undefined> {
|
||||||
const { data } = await postAuthRefresh({
|
const { data } = await postAuthRefresh({
|
||||||
body: {
|
body: {
|
||||||
refresh_token: refreshToken,
|
refresh_token: refreshToken,
|
||||||
},
|
},
|
||||||
|
signal: refreshTokenAbortController.signal,
|
||||||
});
|
});
|
||||||
return data?.data;
|
return data?.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function logout(message: string = '已登出') {
|
export function logout(message: string = '已登出') {
|
||||||
|
refreshTokenAbortController.abort();
|
||||||
clearTokens();
|
clearTokens();
|
||||||
void router.navigate({ to: '/authorize' }).then(() => {
|
void router.navigate({ to: '/authorize' }).then(() => {
|
||||||
toast.info(message);
|
toast.info(message);
|
||||||
|
|||||||
Reference in New Issue
Block a user