feat(auth): enhance authentication flow with dynamic login page configuration and navigation updates

This commit is contained in:
2026-02-25 00:41:01 +08:00
parent fcd914b3c2
commit 341e2331a0
4 changed files with 94 additions and 29 deletions

View File

@@ -27,7 +27,22 @@ export type LayoutStore = {
init: () => Promise<void>;
openLinkList: string[];
setOpenLinkList: (openLinkList: string[]) => void;
loginPageConfig: {
title: string;
subtitle: string;
footer: string;
};
setLoginPageConfig: (config: Partial<LayoutStore['loginPageConfig']>) => void;
links: HeaderLink[];
};
type HeaderLink = {
title: string;
href: string;
description?: string;
icon?: React.ReactNode;
key?: string;
};
export const useLayoutStore = create<LayoutStore>((set, get) => ({
open: false,
setOpen: (open) => set({ open }),
@@ -60,15 +75,29 @@ export const useLayoutStore = create<LayoutStore>((set, get) => ({
isAdmin: false,
setIsAdmin: (isAdmin) => set({ isAdmin }),
init: async () => {
const token = await queryLogin.checkTokenValid()
const token = await queryLogin.getToken();
if (token) {
const user = await queryLogin.checkLocalUser() as UserInfo;
set({ me: {} })
const me = await queryLogin.getMe();
// const user = await queryLogin.checkLocalUser() as UserInfo;
const user = me.code === 200 ? me.data : undefined;
if (user) {
set({ me: user });
set({ isAdmin: user.orgs?.includes?.('admin') || false });
} else {
set({ me: undefined, isAdmin: false });
}
}
},
openLinkList: ['/login'],
setOpenLinkList: (openLinkList) => set({ openLinkList }),
}));
loginPageConfig: {
title: '可视化管理平台',
subtitle: '让工具和智能化触手可及',
footer: '欢迎使用可视化管理平台 · 连接您的工具',
},
setLoginPageConfig: (config) => set((state) => ({
loginPageConfig: { ...state.loginPageConfig, ...config },
})),
links: [{ title: '首页', href: '/', key: 'home' }],
}));