55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import type { ServiceAuthTokenResponse } from '@/client';
|
|
import { toast } from 'sonner';
|
|
import { postAuthRefresh } from '@/client';
|
|
import { ver } from './apiVersion';
|
|
import { router } from './router';
|
|
|
|
const ACCESS_TOKEN_LOCALSTORAGE_KEY = 'token';
|
|
const REFRESH_TOKEN_LOCALSTORAGE_KEY = 'refreshToken';
|
|
|
|
export function setAccessToken(token: string) {
|
|
localStorage.setItem(ACCESS_TOKEN_LOCALSTORAGE_KEY, token);
|
|
}
|
|
|
|
export function getAccessToken() {
|
|
return localStorage.getItem(ACCESS_TOKEN_LOCALSTORAGE_KEY);
|
|
}
|
|
|
|
export function removeAccessToken() {
|
|
localStorage.removeItem(ACCESS_TOKEN_LOCALSTORAGE_KEY);
|
|
}
|
|
|
|
export function setRefreshToken(refreshToken: string) {
|
|
localStorage.setItem(REFRESH_TOKEN_LOCALSTORAGE_KEY, refreshToken);
|
|
}
|
|
|
|
export function getRefreshToken() {
|
|
return localStorage.getItem(REFRESH_TOKEN_LOCALSTORAGE_KEY);
|
|
}
|
|
|
|
export function removeRefreshToken() {
|
|
localStorage.removeItem(REFRESH_TOKEN_LOCALSTORAGE_KEY);
|
|
}
|
|
|
|
export function clearTokens() {
|
|
removeAccessToken();
|
|
removeRefreshToken();
|
|
}
|
|
|
|
export async function doRefreshToken(refreshToken: string): Promise<ServiceAuthTokenResponse | undefined> {
|
|
const { data } = await postAuthRefresh({
|
|
body: {
|
|
refresh_token: refreshToken,
|
|
},
|
|
headers: ver('20260205'),
|
|
});
|
|
return data?.data;
|
|
}
|
|
|
|
export function logout(message: string = '已登出') {
|
|
clearTokens();
|
|
void router.navigate({ to: '/authorize' }).then(() => {
|
|
toast.info(message);
|
|
});
|
|
}
|