import { useState, useRef } from "react"; import { queryCurrentUser } from "@/services/user"; import { defaultRoutes, authRoutes, mergeAuthRoutes } from '@/routes/routes'; import { getMenuItems } from "@/routes/menus"; import { getAuthedRoutes } from "@/routes/permissions"; export default function useUser() { const [user, setUser] = useState(); const menusRef = useRef(); const routesRef = useRef(); const getCurrentUser = () => new Promise((resolve, reject) => { queryCurrentUser().then(res => { const permissions = (res.resourcesList || []).map(x => x.code); // authRoutes 是所有待验证授权的路由 // authedRoutes 是已经被授权的路由 const authedRoutes = getAuthedRoutes(authRoutes, permissions); menusRef.current = getMenuItems(authedRoutes); routesRef.current = mergeAuthRoutes(defaultRoutes, authedRoutes); setUser(res); resolve(res); }) }); return { user, setUser, getCurrentUser, menus: menusRef.current || [], routes: routesRef.current || [], } }