123456789101112131415161718192021222324252627282930313233343536 |
- import { useState, useRef } from "react";
- import { defaultRoutes, authRoutes, mergeAuthRoutes } from '@/routes/routes';
- import { getMenuItems } from "@/routes/menus";
- import { getAuthedRoutes } from "@/routes/permissions";
- import { currentUser } from '@/service/sysuser';
-
- export default function useUser() {
- const [user, setUser] = useState();
- const menusRef = useRef();
- const routesRef = useRef();
-
- const getCurrentUser = () => new Promise((resolve, reject) => {
- currentUser().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);
- }).catch(reject);
- });
-
- return {
- user,
- setUser,
- getCurrentUser,
- menus: menusRef.current || [],
- routes: routesRef.current || [],
- }
-
- }
|