diff --git a/src/pages/auth/modules/BaseHeader.tsx b/src/pages/auth/modules/BaseHeader.tsx index d93cee2..52fd8d2 100644 --- a/src/pages/auth/modules/BaseHeader.tsx +++ b/src/pages/auth/modules/BaseHeader.tsx @@ -51,18 +51,27 @@ export const BaseHeader = (props: { main?: React.ComponentType | null }) => { return ( <>
-
+
{ store.links.map(link => ( - { + if (!link.href) return; + if (link.href.startsWith('http') || link.isRoot) { + window.open(link.href, '_blank'); + return; + } + navigate({ + to: link.href + }) + }} > - {link.key === 'home' && } - {link.icon && {link.icon}} - {link.title} - + {link.key === 'home' && } + {link.icon && <>{link.icon}} + {!link.icon && link.title} +
+ )) }
diff --git a/src/pages/auth/store.ts b/src/pages/auth/store.ts index 765f81e..0f44253 100644 --- a/src/pages/auth/store.ts +++ b/src/pages/auth/store.ts @@ -34,13 +34,15 @@ export type LayoutStore = { }; setLoginPageConfig: (config: Partial) => void; links: HeaderLink[]; + setLinks: (links: HeaderLink[]) => void; }; type HeaderLink = { - title: string; + title?: string; href: string; description?: string; icon?: React.ReactNode; key?: string; + isRoot?: boolean; }; export const useLayoutStore = create((set, get) => ({ @@ -78,19 +80,12 @@ export const useLayoutStore = create((set, get) => ({ const token = await queryLogin.getToken(); if (token) { set({ me: {} }) - let me: UserInfo | undefined = undefined; - - const _user = await queryLogin.checkLocalUser() as UserInfo; - if (_user) { - me = _user; - } - if (!me) { - const res = await queryLogin.getMe(); - me = res.code === 200 ? res.data : undefined; - } - if (me) { - set({ me: me }); - set({ isAdmin: me.orgs?.includes?.('admin') || false }); + 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 }); } @@ -107,4 +102,5 @@ export const useLayoutStore = create((set, get) => ({ loginPageConfig: { ...state.loginPageConfig, ...config }, })), links: [{ title: '', href: '/', key: 'home' }], + setLinks: (links) => set({ links }), }));