Files
cms-server/client/cms/src/lib/token.ts
Noa Virellia 7afc6ec25e
All checks were successful
Client CMS Check Build (NixCN CMS) TeamCity build finished
Backend Check Build (NixCN CMS) TeamCity build finished
fix(client): shit apiVersion everywhere
Signed-off-by: Noa Virellia <noa@requiem.garden>
2026-02-05 11:22:52 +00:00

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);
});
}