update
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kevisual/kv-login",
|
||||
"version": "0.0.8",
|
||||
"version": "0.0.9",
|
||||
"description": "",
|
||||
"main": "src/main.ts",
|
||||
"scripts": {
|
||||
|
||||
@@ -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 }
|
||||
export { checkPluginLogin, clearCode }
|
||||
@@ -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 () => {
|
||||
|
||||
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
@@ -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)
|
||||
|
||||
@@ -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 = () => {
|
||||
|
||||
Reference in New Issue
Block a user