From 93fe738c97ce3b49c5cbe00c33d26356109feed5 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Mon, 9 Oct 2023 19:06:24 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=9E=81=E9=AA=8C=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 + pnpm-lock.yaml | 15 ++++++ src/components/func/geetest.vue | 73 ++++++++++++++++------------- src/pages/common/Test.vue | 3 +- src/types/BBS/Geetest.d.ts | 19 +++++--- src/web/request/operVerification.ts | 49 +++++++++---------- src/web/utils/getRequestHeader.ts | 8 ++-- 7 files changed, 99 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 0d11235c..55ffffc2 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "pinia-plugin-persistedstate": "^3.2.0", "qrcode.vue": "^3.4.1", "tauri-plugin-sql-api": "github:tauri-apps/tauri-plugin-sql#v1", + "uuid": "^9.0.1", "vue": "^3.3.4", "vue-echarts": "^6.6.1", "vue-json-viewer": "^3.0.4", @@ -72,6 +73,7 @@ "@types/color-convert": "^2.0.1", "@types/js-md5": "^0.7.0", "@types/node": "^20.7.1", + "@types/uuid": "^9.0.5", "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", "@vitejs/plugin-vue": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a66cdc6..3abd84cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ dependencies: tauri-plugin-sql-api: specifier: github:tauri-apps/tauri-plugin-sql#v1 version: github.com/tauri-apps/tauri-plugin-sql/1c79471feb06366fe1c11cb1cb6c67bcdb80c215 + uuid: + specifier: ^9.0.1 + version: 9.0.1 vue: specifier: ^3.3.4 version: 3.3.4 @@ -70,6 +73,9 @@ devDependencies: '@types/node': specifier: ^20.7.1 version: 20.7.1 + '@types/uuid': + specifier: ^9.0.5 + version: 9.0.5 '@typescript-eslint/eslint-plugin': specifier: ^6.7.3 version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) @@ -724,6 +730,10 @@ packages: resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} dev: true + /@types/uuid@9.0.5: + resolution: {integrity: sha512-xfHdwa1FMJ082prjSJpoEI57GZITiQz10r3vEJCHa2khEFQjKy91aWKz6+zybzssCvXUwE1LQWgWVwZ4nYUvHQ==} + dev: true + /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true @@ -4751,6 +4761,11 @@ packages: base64-arraybuffer: 1.0.2 dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: diff --git a/src/components/func/geetest.vue b/src/components/func/geetest.vue index 7004274b..22eec007 100644 --- a/src/components/func/geetest.vue +++ b/src/components/func/geetest.vue @@ -44,43 +44,52 @@ watch(show, () => { } }); -async function displayBox(): Promise { - const cookie = userStore.getCookieGroup3(); - const res = await TGRequest.User.verification.get(cookie.ltoken, cookie.ltuid); - if ("retcode" in res) { +async function displayBox(): Promise { + const cookieGet = userStore.getCookieGroup3(); + const resGet = await TGRequest.User.verification.get(cookieGet.ltoken, cookieGet.ltuid); + if ("retcode" in resGet) { showSnackbar({ - text: `[${res.retcode}]${res.message}`, + text: `[${resGet.retcode}]${resGet.message}`, color: "error", }); - return false; + return; } show.value = true; - return await new Promise((resolve) => { - // @ts-expect-error Cannot find name 'initGeetest'. - initGeetest( - { - gt: res.gt, - challenge: res.challenge, - offline: false, - new_captcha: true, - product: "custom", - area: "#verify", - width: "250px", - }, - (captchaObj: TGApp.BBS.Geetest.GeetestCaptcha) => { - geetestRef.value.innerHTML = ""; - captchaObj.appendTo("#geetest"); - captchaObj.onSuccess(async () => { - const validate = captchaObj.getValidate(); - const res = TGRequest.User.verification.verify(userStore.cookie, validate); - resolve(res); - }); - captchaObj.onClose(() => { - show.value = false; - }); - }, - ); - }); + initGeetest( + { + gt: resGet.gt, + challenge: resGet.challenge, + offline: false, + new_captcha: true, + product: "custom", + area: "#verify", + width: "250px", + }, + (captchaObj: TGApp.BBS.Geetest.GeetestCaptcha) => { + geetestRef.value.innerHTML = ""; + captchaObj.appendTo("#geetest"); + // @eslint-ignore-next-line @typescript-eslint/no-misused-promises + captchaObj.onSuccess(async () => { + const validate = captchaObj.getValidate(); + const cookie = { + account_id: userStore.cookie.account_id, + cookie_token: userStore.cookie.cookie_token, + ltoken: userStore.cookie.ltoken, + ltuid: userStore.cookie.ltuid, + }; + const resVerify = await TGRequest.User.verification.verify(cookie, validate); + if (resVerify.retcode !== 0) { + showSnackbar({ + text: `[${resVerify.retcode}]${resVerify.message}`, + color: "error", + }); + } + }); + captchaObj.onClose(() => { + show.value = false; + }); + }, + ); } defineExpose({ diff --git a/src/pages/common/Test.vue b/src/pages/common/Test.vue index d817af2e..255c2e94 100644 --- a/src/pages/common/Test.vue +++ b/src/pages/common/Test.vue @@ -30,8 +30,7 @@ onMounted(async () => { }); async function getGC(): Promise { - const res = await showGeetest(); - console.log(res); + await showGeetest(); }