{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/permission.js","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/permission.js","mtime":1747390379998},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/babel.config.js","mtime":1742646402652},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IHN0b3JlIGZyb20gJ0Avc3RvcmUnOyAvLyDlr7zlhaUgVnVleCBzdG9yZSDlrp7kvosKaW1wb3J0IHJvdXRlciBmcm9tICdAL3JvdXRlcic7IC8vIOWvvOWFpSBWdWUgUm91dGVyIOWunuS+iwppbXBvcnQgeyBub3RpZmljYXRpb24gfSBmcm9tICdhbnQtZGVzaWduLXZ1ZSc7IC8vIOWvvOWFpSBhbnQtZGVzaWduLXZ1ZSDnmoQgbm90aWZpY2F0aW9uIOe7hOS7tgppbXBvcnQgTlByb2dyZXNzIGZyb20gJ25wcm9ncmVzcyc7IC8vIOWvvOWFpei/m+W6puadoee7hOS7tgppbXBvcnQgJ25wcm9ncmVzcy9ucHJvZ3Jlc3MuY3NzJzsgLy8g5a+85YWl6L+b5bqm5p2h5qC35byPCk5Qcm9ncmVzcy5jb25maWd1cmUoewogIHNob3dTcGlubmVyOiBmYWxzZQp9KTsgLy8g6YWN572u6L+b5bqm5p2h77yM6ZqQ6JeP5Yqg6L295Yqo55S7Cgpjb25zdCBsb2dpblBhdGggPSAnL2xvZ2luJzsgLy8g55m75b2V6Lev5b6ECmNvbnN0IGRlZmF1bHRSb3V0ZVBhdGggPSAnL3JhY2UvbGlzdCc7IC8vIOm7mOiupOi3r+eUsei3r+W+hApjb25zdCB3aGl0ZUxpc3QgPSBbJ0xvZ2luJ107IC8vIOeZveWQjeWNle+8jOaXoOmcgOeZu+W9leWNs+WPr+iuv+mXrueahOmhtemdogoKcm91dGVyLmJlZm9yZUVhY2goYXN5bmMgKHRvLCBmcm9tLCBuZXh0KSA9PiB7CiAgTlByb2dyZXNzLnN0YXJ0KCk7IC8vIOW8gOWni+i/m+W6puadoQoKICBjb25zdCB0b2tlbnMgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oInRva2VuIik7IC8vIOS9v+eUqOebuOWQjOeahOmUruadpeiOt+WPlnRva2VuCiAgLyog5pyq55m75b2V5oOF5Ya15LiL55qE6Lev55Sx5oum5oiqICovCiAgaWYgKCF0b2tlbnMpIHsKICAgIC8vIGFsZXJ0KHRva2VucykKICAgIGlmICh3aGl0ZUxpc3QuaW5jbHVkZXModG8ubmFtZSkpIHsKICAgICAgLy8g5aaC5p6c5Zyo55m95ZCN5Y2V5Lit77yM55u05o6l5pS+6KGMCiAgICAgIG5leHQoKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIOWQpuWImemHjeWumuWQkeiHs+eZu+W9lemhtemdogogICAgICBuZXh0KHsKICAgICAgICBwYXRoOiBsb2dpblBhdGgsCiAgICAgICAgcXVlcnk6IHsKICAgICAgICAgIHJlZGlyZWN0OiB0by5mdWxsUGF0aAogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgICByZXR1cm47CiAgfQoKICAvKiDlt7LnmbvlvZXmg4XlhrXkuIvorr/pl67nmbvlvZXnlYzpnaLnmoTlpITnkIYgKi8KICBpZiAodG8ucGF0aCA9PT0gbG9naW5QYXRoKSB7CiAgICAvLyDlpoLmnpzlt7LnmbvlvZXkuJTorr/pl67nmbvlvZXpobXpnaLvvIzliJnph43lrprlkJHoh7Ppu5jorqTpobXpnaIKICAgIG5leHQoZGVmYXVsdFJvdXRlUGF0aCk7CiAgICByZXR1cm47CiAgfQoKICAvKiDlt7Lojrflj5bnlKjmiLfkv6Hmga/nmoTmg4XlhrUgKi8KICBpZiAoc3RvcmUuZ2V0dGVycy5wZXJtaXNzaW9ucyAhPSBudWxsICYmIHN0b3JlLmdldHRlcnMucGVybWlzc2lvbnMgIT09ICIiKSB7CiAgICAvLyDlpoLmnpzlt7Lojrflj5bnlKjmiLfmnYPpmZDkv6Hmga/vvIzliJnnm7TmjqXmlL7ooYwKICAgIG5leHQoKTsKICAgIE5Qcm9ncmVzcy5kb25lKCk7IC8vIOe7k+adn+i/m+W6puadoQogICAgcmV0dXJuOwogIH0KCiAgLyog5pyq6I635Y+W55So5oi35L+h5oGv55qE5oOF5Ya1ICovCiAgdHJ5IHsKICAgIGF3YWl0IHN0b3JlLmRpc3BhdGNoKCdpbml0VXNlcicpOyAvLyDlvILmraXojrflj5bnlKjmiLfkv6Hmga8KICB9IGNhdGNoIChlKSB7CiAgICBzdG9yZS5jb21taXQoJ2xvZ291dCcpOyAvLyDojrflj5blpLHotKXml7bmiafooYzpgIDlh7rnmbvlvZXmk43kvZwKICAgIG5leHQoewogICAgICBwYXRoOiBsb2dpblBhdGgsCiAgICAgIHF1ZXJ5OiB7CiAgICAgICAgcmVkaXJlY3Q6IHRvLmZ1bGxQYXRoCiAgICAgIH0KICAgIH0pOyAvLyDph43lrprlkJHoh7PnmbvlvZXpobXpnaIKICAgIG5vdGlmaWNhdGlvbi5lcnJvcih7CiAgICAgIG1lc3NhZ2U6ICfplJnor68nLAogICAgICBkZXNjcmlwdGlvbjogJ+ivt+axgueUqOaIt+S/oeaBr+Wksei0pe+8jOivt+mHjeivlScKICAgIH0pOyAvLyDmmL7npLrplJnor6/pgJrnn6UKICAgIE5Qcm9ncmVzcy5kb25lKCk7IC8vIOe7k+adn+i/m+W6puadoQogICAgcmV0dXJuOwogIH0KCiAgLyog5oiQ5Yqf6I635Y+W55So5oi35L+h5oGv55qE5oOF5Ya1ICovCiAgLy8g5qOA5p+l6Lev55Sx5p2D6ZmQCiAgaWYgKCFjaGVja0FjY2Vzcyh0bykpIHsKICAgIC8vIOWmguaenOW9k+WJjei3r+eUseaXoOadg+mZkOiuv+mXru+8jOWImemHjeWumuWQkeiHs+m7mOiupOmhtemdogogICAgbmV4dCh7CiAgICAgIHBhdGg6IGRlZmF1bHRSb3V0ZVBhdGgsCiAgICAgIHJlcGxhY2U6IHRydWUKICAgIH0pOwogICAgTlByb2dyZXNzLmRvbmUoKTsgLy8g57uT5p2f6L+b5bqm5p2hCiAgICByZXR1cm47CiAgfQogIGNvbnN0IHJlZGlyZWN0ID0gZGVjb2RlVVJJQ29tcG9uZW50KGZyb20ucXVlcnkucmVkaXJlY3QgfHwgdG8ucGF0aCk7IC8vIOiOt+WPlumHjeWumuWQkeWcsOWdgAogIC8vIOWmguaenOmHjeWumuWQkeWcsOWdgOS4juW9k+WJjei3r+W+hOebuOWQjO+8jOWImeabv+aNouWOhuWPsuiusOW9lQogIGlmIChyZWRpcmVjdCA9PT0gdG8ucGF0aCkgewogICAgbmV4dCh7CiAgICAgIC4uLnRvLAogICAgICByZXBsYWNlOiB0cnVlCiAgICB9KTsKICB9IGVsc2UgewogICAgLy8g5ZCm5YiZ5q2j5bi46YeN5a6a5ZCRCiAgICBuZXh0KHJlZGlyZWN0KTsKICB9CiAgTlByb2dyZXNzLmRvbmUoKTsgLy8g57uT5p2f6L+b5bqm5p2hCn0pOwpyb3V0ZXIuYWZ0ZXJFYWNoKCgpID0+IHsKICBOUHJvZ3Jlc3MuZG9uZSgpOyAvLyDnu5PmnZ/ov5vluqbmnaEKfSk7CgovKioKICog5Yik5pat5b2T5YmN6Lev55Sx5piv5ZCm5YW35pyJ5p2D6ZmQ6K6/6ZeuCiAqIEBwYXJhbSB7Um91dGV9IHJvdXRlIOi3r+eUseWvueixoQogKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YW35pyJ5p2D6ZmQCiAqLwoKZnVuY3Rpb24gY2hlY2tBY2Nlc3Mocm91dGUpIHsKICBjb25zdCB1c2VyUHJpdmlsZWdlcyA9IHN0b3JlLnN0YXRlLnVzZXIudXNlclByaXZpbGVnZXMgPT0gbnVsbCA/IDEgOiBzdG9yZS5zdGF0ZS51c2VyLnVzZXJQcml2aWxlZ2VzOyAvLyDojrflj5bnlKjmiLfmnYPpmZDkv6Hmga8KICBjb25zdCByZXF1aXJlZFByaXZpbGVnZXMgPSByb3V0ZS5tZXRhLmF1dGg7IC8vIOiOt+WPluW9k+WJjei3r+eUseaJgOmcgOadg+mZkOS/oeaBrwogIGNvbnNvbGUubG9nKHVzZXJQcml2aWxlZ2VzKTsKICAvLyDlpoLmnpzot6/nlLHmnKrorr7nva7mnYPpmZDopoHmsYLvvIzliJnpu5jorqTmlL7ooYwKICBpZiAoIXJlcXVpcmVkUHJpdmlsZWdlcykgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyDmo4Dmn6XnlKjmiLfnmoTmnYPpmZDmmK/lkKbljIXlkKvlnKjmiYDpnIDmnYPpmZDkuK0KICByZXR1cm4gcmVxdWlyZWRQcml2aWxlZ2VzLmluY2x1ZGVzKHVzZXJQcml2aWxlZ2VzKTsKfQ=="},{"version":3,"names":["store","router","notification","NProgress","configure","showSpinner","loginPath","defaultRoutePath","whiteList","beforeEach","to","from","next","start","tokens","window","localStorage","getItem","includes","name","path","query","redirect","fullPath","getters","permissions","done","dispatch","e","commit","error","message","description","checkAccess","replace","decodeURIComponent","afterEach","route","userPrivileges","state","user","requiredPrivileges","meta","auth","console","log"],"sources":["/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/permission.js"],"sourcesContent":["import store from '@/store'; // 导入 Vuex store 实例\nimport router from '@/router'; // 导入 Vue Router 实例\nimport { notification } from 'ant-design-vue'; // 导入 ant-design-vue 的 notification 组件\nimport NProgress from 'nprogress'; // 导入进度条组件\nimport 'nprogress/nprogress.css'; // 导入进度条样式\nNProgress.configure({ showSpinner: false }); // 配置进度条,隐藏加载动画\n\nconst loginPath = '/login'; // 登录路径\nconst defaultRoutePath = '/race/list'; // 默认路由路径\nconst whiteList = ['Login']; // 白名单,无需登录即可访问的页面\n\nrouter.beforeEach(async(to, from, next) => {\n NProgress.start(); // 开始进度条\n\n\t\tconst tokens = window.localStorage.getItem(\"token\"); // 使用相同的键来获取token\n /* 未登录情况下的路由拦截 */\n if (!tokens) {\n\t\t\t// alert(tokens)\n if (whiteList.includes(to.name)) { // 如果在白名单中,直接放行\n next();\n } else { // 否则重定向至登录页面\n next({\n path: loginPath,\n query: {\n redirect: to.fullPath,\n },\n });\n }\n return;\n }\n\n /* 已登录情况下访问登录界面的处理 */\n if (to.path === loginPath) { // 如果已登录且访问登录页面,则重定向至默认页面\n next(defaultRoutePath);\n return;\n }\n\n /* 已获取用户信息的情况 */\n if (store.getters.permissions!=null && store.getters.permissions!==\"\") { // 如果已获取用户权限信息,则直接放行\n next();\n NProgress.done(); // 结束进度条\n return;\n }\n\n /* 未获取用户信息的情况 */\n try {\n await store.dispatch('initUser'); // 异步获取用户信息\n } catch (e) {\n store.commit('logout'); // 获取失败时执行退出登录操作\n next({ path: loginPath, query: { redirect: to.fullPath } }); // 重定向至登录页面\n notification.error({\n message: '错误',\n description: '请求用户信息失败,请重试',\n }); // 显示错误通知\n NProgress.done(); // 结束进度条\n return;\n }\n\n /* 成功获取用户信息的情况 */\n // 检查路由权限\n if (!checkAccess(to)) { // 如果当前路由无权限访问,则重定向至默认页面\n next({ path: defaultRoutePath, replace: true });\n NProgress.done(); // 结束进度条\n return;\n }\n const redirect = decodeURIComponent(from.query.redirect || to.path); // 获取重定向地址\n // 如果重定向地址与当前路径相同,则替换历史记录\n if (redirect === to.path) {\n next({...to, replace: true });\n } else { // 否则正常重定向\n next(redirect);\n }\n NProgress.done(); // 结束进度条\n});\n\nrouter.afterEach(() => {\n NProgress.done(); // 结束进度条\n});\n\n/**\n * 判断当前路由是否具有权限访问\n * @param {Route} route 路由对象\n * @returns {boolean} 是否具有权限\n */\n\nfunction checkAccess(route) {\n\n\tconst userPrivileges = store.state.user.userPrivileges==null ? 1 : store.state.user.userPrivileges; // 获取用户权限信息\n\tconst requiredPrivileges = route.meta.auth; // 获取当前路由所需权限信息\n\tconsole.log(userPrivileges)\n\t// 如果路由未设置权限要求,则默认放行\n\tif (!requiredPrivileges) {\n\t\t\treturn true;\n\t}\n\n\t// 检查用户的权限是否包含在所需权限中\n\treturn requiredPrivileges.includes(userPrivileges);\n}\n"],"mappings":"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","ignoreList":[]}]}