Browse Source

up web client v2

lejianwen 1 year ago
parent
commit
f68a9a9562
3 changed files with 42 additions and 27 deletions
  1. 4 1
      src/utils/auth.js
  2. 22 11
      src/utils/webclient.js
  3. 16 15
      src/views/address_book/components/shareByWebClient.vue

+ 4 - 1
src/utils/auth.js

@@ -1,3 +1,5 @@
1
+import {setToken as setWCToken} from '@/utils/webclient'
2
+
1 3
 const TokenKey = 'access_token'
2 4
 const OidcCode = 'oidc_code'
3 5
 const OidcCodeExpiry = 'oidc_code_expiry';
@@ -7,6 +9,7 @@ export function getToken () {
7 9
 }
8 10
 
9 11
 export function setToken (token) {
12
+  setWCToken(token)
10 13
   return localStorage.setItem(TokenKey, token)
11 14
 }
12 15
 
@@ -40,4 +43,4 @@ export function getCode() {
40 43
 export function removeCode() {
41 44
   localStorage.removeItem(OidcCode);
42 45
   localStorage.removeItem(OidcCodeExpiry);
43
-}
46
+}

+ 22 - 11
src/utils/webclient.js

@@ -6,30 +6,37 @@ import * as message from '@/utils/webclient/message'
6 6
 import { ElMessageBox } from 'element-plus'
7 7
 import { T } from '@/utils/i18n'
8 8
 
9
+const prefix = 'wc-'
10
+
11
+export function setToken (token) {
12
+  localStorage.setItem(`${prefix}option:local:access_token`, token)
13
+}
14
+
9 15
 export const toWebClientLink = (row) => {
10
-  window.open(`${rustdeskConfig.value.api_server}/webclient/#/?id=${row.id}`)
16
+  //v2
17
+  window.open(`${rustdeskConfig.value.api_server}/webclient2/#/${row.id}`)
18
+  // window.open(`${rustdeskConfig.value.api_server}/webclient/#/?id=${row.id}`)
11 19
 }
12 20
 
13
-export function loadRustdeskConfig () {
14
-  const rustdeskConfig = ref({})
15
-  const fetchConfig = async () => {
21
+export const rustdeskConfig = ref({})
22
+
23
+export async function loadRustdeskConfig () {
24
+  console.log('loadRustdeskConfig')
25
+  if (rustdeskConfig.value.id_server === undefined || rustdeskConfig.value.key === undefined) {
16 26
     const res = await server().catch(_ => false)
17 27
     if (res) {
18 28
       rustdeskConfig.value = res.data
19
-      localStorage.setItem('custom-rendezvous-server', res.data.id_server)
20
-      localStorage.setItem('key', res.data.key)
21
-      localStorage.setItem('api-server', res.data.api_server)
29
+      localStorage.setItem(`${prefix}custom-rendezvous-server`, res.data.id_server)
30
+      localStorage.setItem(`${prefix}key`, res.data.key)
31
+      localStorage.setItem(`${prefix}api-server`, res.data.api_server)
22 32
     }
23 33
   }
24
-  if (rustdeskConfig.value.id_server === undefined || rustdeskConfig.value.key === undefined) {
25
-    fetchConfig()
26
-  }
27 34
   return {
28 35
     rustdeskConfig,
29 36
   }
30 37
 }
31 38
 
32
-export const { rustdeskConfig } = loadRustdeskConfig()
39
+
33 40
 export async function getPeerSlat (id) {
34 41
   const [addr, port] = rustdeskConfig.value.id_server.split(':')
35 42
   if (!addr) {
@@ -107,3 +114,7 @@ export async function getPeerSlat (id) {
107 114
   }
108 115
 
109 116
 }
117
+
118
+export function getV2ShareUrl (token) {
119
+  return `${rustdeskConfig.value.api_server}/webclient2/#/?share_token=${token}`
120
+}

+ 16 - 15
src/views/address_book/components/shareByWebClient.vue

@@ -3,17 +3,17 @@
3 3
     <el-form-item :label="T('ID')" prop="id" required>
4 4
       {{ formData.id }}
5 5
     </el-form-item>
6
-    <el-form-item :label="T('PasswordType')">
7
-      <div>
8
-        <el-radio-group v-model="formData.password_type" @change="changePwdType">
9
-          <el-radio value="once">{{ T('OncePassword') }}</el-radio>
10
-          <el-radio value="fixed">{{ T('FixedPassword') }}</el-radio>
11
-        </el-radio-group>
12
-        <div v-if="formData.password_type==='fixed'" style="color: red">
13
-          {{ T('FixedPasswordWarning') }}
14
-        </div>
15
-      </div>
16
-    </el-form-item>
6
+    <!--    <el-form-item :label="T('PasswordType')">
7
+          <div>
8
+            <el-radio-group v-model="formData.password_type" @change="changePwdType">
9
+              <el-radio value="once">{{ T('OncePassword') }}</el-radio>
10
+              <el-radio value="fixed">{{ T('FixedPassword') }}</el-radio>
11
+            </el-radio-group>
12
+            <div v-if="formData.password_type==='fixed'" style="color: red">
13
+              {{ T('FixedPasswordWarning') }}
14
+            </div>
15
+          </div>
16
+        </el-form-item>-->
17 17
     <el-form-item :label="T('Password')" prop="password" required>
18 18
       <el-input v-model="formData.password" type="password" show-password></el-input>
19 19
     </el-form-item>
@@ -45,13 +45,14 @@
45 45
 <script setup>
46 46
   import { T } from '@/utils/i18n'
47 47
   import { computed, reactive, ref, watch } from 'vue'
48
-  import { getPeerSlat, rustdeskConfig } from '@/utils/webclient'
48
+  import { loadRustdeskConfig, getV2ShareUrl } from '@/utils/webclient'
49 49
   import * as sha256 from 'fast-sha256'
50 50
   import { shareByWebClient } from '@/api/address_book'
51 51
   import { CopyDocument } from '@element-plus/icons'
52 52
   import { handleClipboard } from '@/utils/clipboard'
53 53
   import { ElMessageBox } from 'element-plus'
54 54
 
55
+  loadRustdeskConfig()
55 56
   const props = defineProps({
56 57
     id: String,
57 58
     hash: String,
@@ -106,7 +107,7 @@
106 107
     }
107 108
     loading.value = true
108 109
     const _formData = { ...formData }
109
-    if (formData.password !== formData.hash) {
110
+    /*if (formData.password !== formData.hash) {
110 111
       const res = await getPeerSlat(formData.id).catch(e => {
111 112
         ElMessageBox.alert(T('Timeout'), T('Error'))
112 113
         return false
@@ -117,10 +118,10 @@
117 118
       }
118 119
       const p = hash([formData.password, res.salt])
119 120
       _formData.password = btoa(p.toString().split(',').map((v) => String.fromCharCode(v)).join(''))
120
-    }
121
+    }*/
121 122
     const res = await shareByWebClient(_formData).catch(_ => false)
122 123
     if (res) {
123
-      link.value = `${rustdeskConfig.value.api_server}/webclient/#/?share_token=${res.data.share_token}`
124
+      link.value = getV2ShareUrl(res.data.share_token)
124 125
       emits('success')
125 126
     }
126 127
     loading.value = false