From 006a5607f1df346eae57d1fc9fb69742790844aa Mon Sep 17 00:00:00 2001 From: dawnwinterLiu <1737801684@qq.com> Date: Fri, 3 Nov 2023 12:34:34 +0800 Subject: [PATCH] feat: other login --- package.json | 4 +- src/api/User/index.js | 8 ++++ src/dgiot/plugins/permissions.js | 46 ++++++++++++------- src/store/modules/user.js | 1 + .../topo/components/TopoTabs.vue | 33 +++++++++++++ src/views/DeviceCloud/manage/home_index.vue | 21 ++++----- src/views/MultiTenant/user/login/index.vue | 3 +- 7 files changed, 87 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index b9d0fcea82..1df54ec5f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dgiot/dgiot-dashboard", - "version": "4.8.5", + "version": "4.8.6", "author": "xxb", "license": "MPL-2.0", "private": false, @@ -65,8 +65,10 @@ "@material/icon-button": "13.0.0", "amis": "1.9.1-beta.11", "amis-editor": "4.1.0-beta.24", + "cache-loader": "^4.1.0", "driver.js": "^0.9.8", "pnpm": "^7.3.0", + "rc-input-number": "7.3.11", "register-service-worker": "1.7.2", "resize-detector": "0.3.0", "vditor": "^3.8.15", diff --git a/src/api/User/index.js b/src/api/User/index.js index ac431283b9..408a0dfb60 100644 --- a/src/api/User/index.js +++ b/src/api/User/index.js @@ -57,6 +57,14 @@ export function Sitepro(pro) { }) } +export function checkoutToken(tempToken) { + return request({ + url: '/checkoutToken?tempToken=' + tempToken, + method: 'get', + data: {}, + }) +} + // export function login(username, password) { // return request({ // url: 'auth/login', diff --git a/src/dgiot/plugins/permissions.js b/src/dgiot/plugins/permissions.js index 8ba306245c..35df8fa8c1 100644 --- a/src/dgiot/plugins/permissions.js +++ b/src/dgiot/plugins/permissions.js @@ -15,6 +15,8 @@ import DgiotProgress from 'nprogress' // import 'nprogress/nprogress.css' import getPageTitle from '@/utils/vue/pageTitle' import { toLoginRoute } from '@/utils/router/routes' +import { checkoutToken, login } from '@/api/User' + import { authentication, loginInterception, @@ -28,6 +30,7 @@ DgiotProgress.configure({ trickleSpeed: 200, showSpinner: false, }) + router.beforeEach(async (to, from, next) => { window.errRoute = null store.dispatch('routes/setRoutesOpenTime', { @@ -36,19 +39,39 @@ router.beforeEach(async (to, from, next) => { }) if (to.name == '404') { window.errRoute = to - console.log('dgiot router log---') - console.log(to) + return false } + if (to.query.tempToken) { + let checkoutflag = false + await checkoutToken(to.query.tempToken).then((res) => { + if (res.code == 200) { + checkoutflag = true + } + }) + if (checkoutflag) { + Vue.prototype.$baseMessage( + Vue.prototype.$translateTitle(`token有效,登录跳转中`), + 'success' + ) + await store.dispatch('user/login', { + username: 'dgiot', + password: 'w9943535dsgfgdsgdsertet', + }) + } else { + Vue.prototype.$baseMessage( + Vue.prototype.$translateTitle(`token已失效。`), + 'error' + ) + } + } const { showProgressBar } = store.getters['settings/theme'] if (showProgressBar) DgiotProgress.start() - let hasToken = store.getters['user/token'] - + // let hasToken = store.getters['user/token'] + let hasToken = localStorage.getItem('sessionToken') if (!loginInterception) hasToken = true if (hasToken) { if (store.getters['routes/routes'].length) { - // 这里判断下存储的路由表 并且过滤掉白名单 - // dgiotlog.log(store.getters['routes/routes']) // 禁止已登录用户返回登录页 if (to.path === '/login') { next({ @@ -83,16 +106,7 @@ router.beforeEach(async (to, from, next) => { } } else { if (routesWhiteList.includes(to.path)) { - // 设置游客路由(不需要可以删除) - if (supportVisit && !store.getters['routes/routes'].length) { - await store.dispatch('routes/setRoutes', 'visit') - next({ - ...to, - replace: true, - }) - } else { - next() - } + next() } else { next(toLoginRoute(to)) } diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 517902a421..8d211e4d03 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -427,6 +427,7 @@ const actions = { localStorage.setItem('homeScreen', homeScreen) localStorage.setItem('background', background) localStorage.setItem('rolename', roles[0].name) + localStorage.setItem('sessionToken', sessionToken) // console.log('不是pc端', isPC()) if (!isPC()) { window.jstoken?.setJsToken( diff --git a/src/views/CloudFunction/topo/components/TopoTabs.vue b/src/views/CloudFunction/topo/components/TopoTabs.vue index b6ddbb1a5f..1b773da926 100644 --- a/src/views/CloudFunction/topo/components/TopoTabs.vue +++ b/src/views/CloudFunction/topo/components/TopoTabs.vue @@ -873,6 +873,39 @@ " /> +
+ 低代码视图组件 +
+ + - + @@ -547,14 +547,14 @@ sortable width="120" /> - - - - - - - - +