feat(auth): refactor authentication flow and add login route

- Updated import path for QueryLoginBrowser in query.ts
- Enhanced AuthProvider to allow open links without requiring login
- Added clearMe function to reset user state and redirect to login
- Introduced BaseHeader component for consistent header layout
- Created LoginComponent to handle login success events
- Added App component to manage login state and navigation
- Defined new login route in routeTree and integrated with the application
This commit is contained in:
2026-02-24 17:25:45 +08:00
parent c1df9eb5d4
commit fcd914b3c2
10 changed files with 386 additions and 231 deletions

View File

@@ -19,11 +19,14 @@ export type LayoutStore = {
setOpenUser: (openUser: boolean) => void;
me?: UserInfo;
setMe: (me: UserInfo) => void;
clearMe: () => void;
getMe: () => Promise<void>;
switchOrg: (username?: string) => Promise<void>;
isAdmin: boolean;
setIsAdmin: (isAdmin: boolean) => void
init: () => Promise<void>;
openLinkList: string[];
setOpenLinkList: (openLinkList: string[]) => void;
};
export const useLayoutStore = create<LayoutStore>((set, get) => ({
open: false,
@@ -32,6 +35,10 @@ export const useLayoutStore = create<LayoutStore>((set, get) => ({
setOpenUser: (openUser) => set({ openUser }),
me: undefined,
setMe: (me) => set({ me }),
clearMe: () => {
set({ me: undefined, isAdmin: false });
window.location.href = '/root/login/?redirect=' + encodeURIComponent(window.location.href);
},
getMe: async () => {
const res = await queryLogin.getMe();
if (res.code === 200) {
@@ -61,5 +68,7 @@ export const useLayoutStore = create<LayoutStore>((set, get) => ({
set({ isAdmin: user.orgs?.includes?.('admin') || false });
}
}
}
},
openLinkList: ['/login'],
setOpenLinkList: (openLinkList) => set({ openLinkList }),
}));