feat: add login kv by web

This commit is contained in:
2025-12-28 16:31:57 +08:00
parent b256ef20bf
commit 593e5dd670
4 changed files with 117 additions and 15 deletions

View File

@@ -2,9 +2,11 @@ import { query } from './query.ts';
import { createMessage } from '../pages/kv-message.ts';
import { WX_MP_APP_ID } from '../pages/kv-login.ts';
import { emit } from './mitt.ts';
import { Query } from '@kevisual/query';
import { QueryLoginBrowser } from '@kevisual/api/login'
export const message = createMessage();
type LoginOpts = {
loginMethod: 'password' | 'phone' | 'wechat' | 'wechat-mp' | 'wechat-mp-ticket',
loginMethod: 'password' | 'web' | 'phone' | 'wechat' | 'wechat-mp' | 'wechat-mp-ticket',
data: any,
el: HTMLElement
}
@@ -40,10 +42,28 @@ export const loginHandle = async (opts: LoginOpts) => {
case 'wechat':
await loginByWeChat(data)
break
case 'web':
await loginByWeb(data)
break
default:
console.warn('未知的登录方式:', loginMethod)
}
}
const loginByWeb = async (data: {}) => {
const url = new URL("https://kevisual.cn/api/router");
const query = new Query({ url: "https://kevisual.cn/api/router" })
const login = new QueryLoginBrowser({ query })
// @ts-ignore
const res = login.loginWithWeb(url.origin, {})
console.log('打开网页登录:', res)
window.open(res.url, '_blank');
const status = await login.pollLoginStatus(res);
if (status) {
redirectHome()
} else {
message.error('网页登录失败,请重试')
}
}
/**
* 使用用户名和密码登录
* @param data