From 78927afd7a225dacb376101cd8797b25c2003dc1 Mon Sep 17 00:00:00 2001 From: abearixong Date: Tue, 9 Dec 2025 10:34:24 +0800 Subject: [PATCH] update --- package.json | 2 +- packages/kv-login/package.json | 2 +- packages/kv-login/src/main.ts | 4 +-- packages/kv-login/src/modules/login-handle.ts | 4 ++- pnpm-lock.yaml | 10 +++--- src/apps/nav/index.tsx | 34 +++++++++++++++++-- 6 files changed, 44 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 8338a53..b54de74 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@floating-ui/dom": "^1.7.4", "@kevisual/ai": "^0.0.19", "@kevisual/context": "^0.0.4", - "@kevisual/kv-login": "^0.0.8", + "@kevisual/kv-login": "^0.0.9", "@kevisual/query": "0.0.31", "@kevisual/query-login": "^0.0.7", "@kevisual/registry": "^0.0.1", diff --git a/packages/kv-login/package.json b/packages/kv-login/package.json index 7dbdedb..5bf58a1 100644 --- a/packages/kv-login/package.json +++ b/packages/kv-login/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/kv-login", - "version": "0.0.8", + "version": "0.0.9", "description": "", "main": "src/main.ts", "scripts": { diff --git a/packages/kv-login/src/main.ts b/packages/kv-login/src/main.ts index d151c45..3492a29 100644 --- a/packages/kv-login/src/main.ts +++ b/packages/kv-login/src/main.ts @@ -1,7 +1,7 @@ -import { checkPluginLogin } from './modules/login-handle'; +import { checkPluginLogin, clearCode } from './modules/login-handle'; import './pages/kv-login' import './pages/kv-message' export { loginEmitter } from './pages/kv-login' -export { checkPluginLogin } \ No newline at end of file +export { checkPluginLogin, clearCode } \ No newline at end of file diff --git a/packages/kv-login/src/modules/login-handle.ts b/packages/kv-login/src/modules/login-handle.ts index 9bce8d8..b5ac59f 100644 --- a/packages/kv-login/src/modules/login-handle.ts +++ b/packages/kv-login/src/modules/login-handle.ts @@ -93,11 +93,13 @@ const loginByWeChatMp = async (data: { wechatMpCode: string }) => { console.log('使用微信公众号登录:', data) } -const clearCode = () => { +export const clearCode = () => { const url = new URL(window.location.href); // 清理 URL 中的 code 参数 url.searchParams.delete('code'); url.searchParams.delete('state'); + url.searchParams.delete('user-check'); + url.searchParams.delete('redirect'); window.history.replaceState({}, document.title, url.toString()); } export const checkWechat = async () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbf62e3..40b7d91 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^0.0.4 version: 0.0.4 '@kevisual/kv-login': - specifier: ^0.0.8 - version: 0.0.8(@kevisual/query@0.0.31) + specifier: ^0.0.9 + version: 0.0.9(@kevisual/query@0.0.31) '@kevisual/query': specifier: 0.0.31 version: 0.0.31 @@ -890,8 +890,8 @@ packages: '@kevisual/context@0.0.4': resolution: {integrity: sha512-HJeLeZQLU+7tCluSfOyvkgKLs0HjCZrdJlZgEgKRSa8XTwZfMAUt6J7qZTbrZAHBlPtX68EPu/PI8JMCeu3WAQ==} - '@kevisual/kv-login@0.0.8': - resolution: {integrity: sha512-N6nDCwI0sZkjQAiJf7JpyVvn5x3Nf2qWp9U9vzSMDyYeV/PHNzMZIr42Woma2MGFwcjMRjcnJxIC7HWARVLLsQ==} + '@kevisual/kv-login@0.0.9': + resolution: {integrity: sha512-Ge+gWRLebw25PLFP96Lz+9uQ6rlHznmxY9l6G1eFfHsggXmhi9v5ZX5nrlGx2/Va7emDizJz12SW0cjlQ/BZog==} '@kevisual/logger@0.0.4': resolution: {integrity: sha512-+fpr92eokSxoGOW1SIRl/27lPuO+zyY+feR5o2Q4YCNlAdt2x64NwC/w8r/3NEC5QenLgd4K0azyKTI2mHbARw==} @@ -4499,7 +4499,7 @@ snapshots: '@kevisual/context@0.0.4': {} - '@kevisual/kv-login@0.0.8(@kevisual/query@0.0.31)': + '@kevisual/kv-login@0.0.9(@kevisual/query@0.0.31)': dependencies: '@kevisual/context': 0.0.4 '@kevisual/query-login': 0.0.7(@kevisual/query@0.0.31) diff --git a/src/apps/nav/index.tsx b/src/apps/nav/index.tsx index 2fd6815..0cb89e3 100644 --- a/src/apps/nav/index.tsx +++ b/src/apps/nav/index.tsx @@ -2,10 +2,39 @@ import { useEffect, useState } from "react"; import { useUserStore } from "./store.ts"; import { useShallow } from 'zustand/shallow'; import '@kevisual/kv-login'; +import { clearCode } from '@kevisual/kv-login' import { useContextKey } from "@kevisual/context"; - +import { toast as message } from 'react-toastify'; import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "@/components/ui/dialog"; - +import { queryLogin as query } from '@/modules/query'; +export const checkPluginLogin = async () => { + const userCheck = 'user-check'; + const url = new URL(location.href); + const redirect = url.searchParams.get('redirect'); + const redirectUrl = redirect ? decodeURIComponent(redirect) : ''; + const checkKey = url.searchParams.get(userCheck); + if (redirect && checkKey) { + // 通过refresh_token 刷新token + const me = await query.getMe(); + if (me.code === 200) { + message.success('登录插件中...'); + const token = await query.cacheStore.getAccessToken(); + const newRedirectUrl = new URL(redirectUrl); + newRedirectUrl.searchParams.set('token', token + ''); + setTimeout(() => { + window.open(newRedirectUrl.toString(), '_blank'); + clearCode(); + }, 1000); + return; + } else { + clearCode(); + const state = useUserStore.getState() + state.setOpen(true); + } + // 刷新token失败,登陆页自己跳转 + } + console.log('checkKey', checkKey, redirectUrl); +} export const LoginComponent = ({ onLoginSuccess }: { onLoginSuccess: () => void }) => { useEffect(() => { // 监听登录成功事件 @@ -42,6 +71,7 @@ export const Nav = () => { useEffect(() => { store.queryUser(); store.init(); + checkPluginLogin(); }, []); const handleLoginSuccess = () => {