mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-03-22 15:39:41 +08:00
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { wcdbService } from './wcdbService'
|
|
import { BrowserWindow } from 'electron'
|
|
|
|
export class WindowsHelloService {
|
|
private verificationPromise: Promise<{ success: boolean; error?: string }> | null = null
|
|
|
|
/**
|
|
* 验证 Windows Hello
|
|
* @param message 提示信息
|
|
*/
|
|
async verify(message: string = '请验证您的身份以解锁 WeFlow', targetWindow?: BrowserWindow): Promise<{ success: boolean; error?: string }> {
|
|
// Prevent concurrent verification requests
|
|
if (this.verificationPromise) {
|
|
return this.verificationPromise
|
|
}
|
|
|
|
// 获取窗口句柄: 优先使用传入的窗口,否则尝试获取焦点窗口,最后兜底主窗口
|
|
const window = targetWindow || BrowserWindow.getFocusedWindow() || BrowserWindow.getAllWindows()[0]
|
|
const hwndBuffer = window?.getNativeWindowHandle()
|
|
// Convert buffer to int string for transport
|
|
const hwndStr = hwndBuffer ? BigInt('0x' + hwndBuffer.toString('hex')).toString() : undefined
|
|
|
|
this.verificationPromise = wcdbService.verifyUser(message, hwndStr)
|
|
.finally(() => {
|
|
this.verificationPromise = null
|
|
})
|
|
|
|
return this.verificationPromise
|
|
}
|
|
}
|
|
|
|
export const windowsHelloService = new WindowsHelloService()
|