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 @@
"
/>